Unity坐标与旋转

一、坐标与旋转

1. 节点的坐标、旋转

节点的坐标、旋转,都是Vector3表示

transform.position = new Vector3(0, 1.0f, 0);   //指定位置
transform.eulerAngles = new Vector3(0, 0, 90f); //指定角度

Euler Angle 为欧拉角,即用直观的角度来表示旋转
transform.rotation 是用Vector4表示旋转,较为复杂

2. 世界坐标、本地坐标

世界坐标: World Space Position,以世界的坐标系计算
本地坐标: Local Space Position,以父节点的坐标系计算

transform.localEulerAngles = new Vector3(0, 0, 180);//相对角度
transform.localPosition = new Vector3(0, -2f, 0);   //相对位置

诸如子弹相对飞机运动,可以用本地坐标设置子弹的位置

二、物体的运动

transform.Translate(dx, dy, dz) 用于实现运动

  1. 基于自身方向移动
transform.Translate(0, 0.02f, 0, Space.Self);   //移动基于自身的坐标系

在这里插入图片描述

  1. 基于世界方向移动
transform.Translate(0, 0.02f, 0, Space.World);  //移动基于世界的坐标系

小飞机竖直向上移动

  1. 匀速移动
    由于Update()是每次刷新调用一次,而每帧的间隔时间不同,因此上述运动的速度是变化的。在类中添加 speed 属性作为移动的速度,设置权限为 public 则可以在Unity中改变速度动态调试。Time.deltaTime 是每帧的间隔时间,用速度×时间作为移动距离,从而使速度保持一致。
//写在类中
--------------
### Unity 中实现坐标绕轴旋转Unity 中,可以使用多种方式让物体围绕特定轴进行旋转。以下是几种常见的方法: #### 使用 `Quaternion.AngleAxis` 方法 通过创建一个新的四元数并应用到游戏对象上,可以让其按照指定角度和方向旋转。 ```csharp // 定义一个90度的X轴旋转 Quaternion rotation = Quaternion.AngleAxis(90f, Vector3.right); gameObject.transform.rotation = rotation; ``` 这种方法适用于一次性设置固定的旋转角度[^1]。 #### 利用 `Transform.Rotate` 函数动态调整 对于需要实时响应输入或其他变化的情况,则可采用此函数来进行增量式的旋转操作。例如基于鼠标的滚动事件来改变物体的方向。 ```csharp using UnityEngine; public class ObjectRotation : MonoBehaviour { public float rotationSpeed = 10f; public Vector3 rotationAxis = Vector3.up; void Update() { float rotationAmount = Input.GetAxis("Mouse ScrollWheel") * rotationSpeed; transform.Rotate(rotationAxis, rotationAmount); } } ``` 这段脚本允许玩家通过鼠标滚轮交互式地控制物体沿给定轴线转动的速度幅度[^2]。 #### 应用于子物体局部空间内的自旋效果 当涉及到父子关系下的组件时,可能更倾向于保持相对位置不变而仅修改自身的姿态。此时应当考虑利用本地变换属性完成此类任务。 ```csharp childCube1.transform.localRotation *= rotU; ``` 这里展示了如何更新某个子节点相对于父级的姿态而不影响整体结构[^3]。 #### 数学原理背后的矩阵运算解释 从几何角度来看,任何三维空间中的刚体运动都可以分解成平移加旋转两部分处理;而对于后者而言,通常借助于正交标准基底之间的映射关系表达——即所谓的“旋转矩阵”。具体来说,在Unity环境下执行一次关于Z轴顺时针转过一定弧度的动作就相当于对该点位矢量施加了一个对应的线性变换过程[^4]。 综上所述,开发者可以根据实际需求选取最合适的方案实施精确操控。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值