unity 世界坐标间角度_Unity 世界坐标&局部坐标下的旋转

本文介绍了Unity中如何使用四元数进行旋转操作,包括世界坐标和局部坐标的区别。绕本地轴和世界轴旋转的区别在于乘法顺序,右乘表示绕本地轴,左乘表示绕世界轴。同时,总结了旋转实例中的关键点,强调了乘法顺序对旋转结果的影响。
摘要由CSDN通过智能技术生成

一、旋转方法

在 Unity 中为物体旋转提供了各种 API ,例如 RotateAround、Rotate、LookAt 等方法。但为了避免万向节死锁的问题,一般使用四元数来表示物体的旋转。

四元数的乘法可以看作对一个物体施加两次旋转,最终的旋转角度由这两次旋转的角度决定,旋转的顺序也会对旋转的结果产生影响(Q1*Q2≠Q2*Q1),因为四元数乘法的本质就是矩阵的乘法。

二、世界坐标&局部坐标

物体的坐标分为世界坐标(global)和局部坐标(local)

世界旋转坐标(如transform.rotation)表示物体相对于世界坐标系下的旋转角度

局部旋转坐标(如transform.localRotation)表示物体相对于父物体坐标系下的旋转角度,如果没有父物体,则局部旋转坐标与世界旋转坐标相同

另外,在 Inspector 面板中 Transform 的值也是物体的局部坐标。

三、世界坐标下的旋转

利用四元数旋转时要记住:旋转轴属于世界坐标系还是物体坐标系是由乘法的顺序决定的。

所以

绕本地轴进行旋转时:transform.rotation = transform.rotation * Quaternion;

绕世界轴进行旋转时:transform.rotation = Quaternion * transform.rotation;

在这里不需要知道任何本地旋转坐标或者对旋转轴进行坐标系之间的转换。

四、局部坐标下的旋转

在局部坐标下的旋转操作也是一样的,只有旋转顺序决定了旋转轴属于世界坐标系还是物体坐标系:

绕本地轴进行旋转:transform.localRot

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值