【unity2D】API-学习记录11-关于旋转:欧拉角与四元数

目标

了解Unity中有关旋转的知识。


前言

UnityAPI中文文档里,关于旋转的解释,非常详细清楚。这里把其中的重点总结出来。


Unity中如何旋转

在Unity中,一般以两种方式实现旋转:

  1. 欧拉角(Euler Angle)
  2. 四元数(Quaternion)

欧拉角Euler Angle

欧拉角由按顺序应用的 X、Y 和 Z 三个角度值来表示,能被直观地读出来,正如下图中Transform中的Rotation。
image

欧拉角又分为静态和动态:

  1. 静态:绕世界坐标系三个轴的旋转,物体旋转过程中坐标轴保持静止。
  2. 动态:绕物体坐标系三个轴的旋转,物体旋转过程中坐标轴随着物体做相同的转动

虽然欧拉角非常直观方便,但动态欧拉角存在万向节死锁的局限

简单来讲,就是物体依次沿三个轴旋转时(尤其是前两次旋转中有转动90°时),则可能使“物体坐标系的某个轴”和“世界坐标系的一个非对应轴”相重合,即丢失某个轴向的自由度,使旋转偏离预期效果。

由于2D游戏一般只绕Z轴旋转,就不过多展开万向节死锁问题,具体请参考关于万向节死锁(Gimbal Lock)(续)

为了避免万向节死锁,四元数出场。


四元数Quaternion

四元数可用于表示游戏对象的方向或旋转。此表示方式在内部由四个数字组成(在 Unity 中称为 x、y、z 和 w),但是这些数字不代表角度或轴,通常不需要直接访问它们。除非特别想深入研究四元数的数学原理,否则只需要知道四元数代表 3D 空间中的旋转即可,通常不需要知道或修改 x、y 和 z 属性。

四元数涉及某些数学知识,直观上难以理解。但 Unity 在内部将所有游戏对象的旋转存储为四元数,因为这种表示方式的好处超过了局限性。


补充

在Unity里,有个专门做旋转的类叫Quaternion(四元数)。具体怎么用,之后再学。


参考资料

Unity 中的旋转和方向
关于万向节死锁(Gimbal Lock)(续)


__EOF__

本文作者OtusScops
本文链接https://www.cnblogs.com/OtusScops/p/14756851.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   AshScops  阅读(309)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示