[Unity] Unity 3D 中的旋转

Unity 3D 中的旋转

一、Unity 3D 中 Rotation

在Unity中,旋转通常可以用一个三维向量(x,y,z)表示。实际上这是欧拉角。三个分量分别是绕x轴、y轴和z轴的旋转角度。

要对一个GameObject进行旋转,可以直接通过如下代码:

transform.Rotate(xAngle, yAngle, zAngle);

那么有如下疑问:

  1. 上述的x轴、y轴、z轴指的是哪组基?是世界坐标系下的xyz轴,还是局部坐标系下的xyz轴?还是其他?
  2. 旋转的正方向如何?
  3. 旋转的顺序如何?

下面一一解答。

二、旋转轴

首先,回答第一个问题,到底旋转轴是哪个坐标系的基?分为如下三种情况。

1. 旋转轴:Inspector 中 Transform 的旋转数值

TransformExample1

对于这一个情况,Unity Doc 中有明确的说明,

The position, rotation and scale values of a Transform are measured relative to the Transform’s parent. If the Transform has no parent, the properties are measured in world space.

即,Editor中Transform组件的旋转轴是父节点的模型空间坐标轴,如果没有父节点,则旋转轴是世界空间坐标轴。

unity_transform

上图显示了如果Transform有父节点,如图中的”Mesh”,则Position将是在其父节点(这里是”Cow”)的模型空间中的位置;如果没有父节点,Position就是在世界空间中的位置。同样,Transform中的Rotation和Scale也是相同的道理。

2. 旋转轴:在Script中使用Rotate函数,在Space.Self中旋转

public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
  • 36
    点赞
  • 184
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值