30.Unity中的坐标系及注意事项

  1. 30.Unity中的坐标系及注意事项
    1. 30.1 题目
    2. 30.2 深入解析
    3. 30.3 答题示例
    4. 30.4 关键词联想

30.Unity中的坐标系及注意事项


30.1 题目

Unity中使用的是左手还是右手坐标系?我们需要注意什么?


30.2 深入解析

Unity中使用的是左手坐标系。在左手坐标系中,X轴指向右侧,Y轴指向上方,Z轴指向屏幕外。与之相反,右手坐标系中,X轴仍然指向右侧,Y轴仍然指向上方,但Z轴指向屏幕内。

在进行向量相关计算时,需要注意左手和右手坐标系的区别。例如,在进行旋转、法线计算等操作时,如果不了解使用的是左手还是右手坐标系,可能会导致错误的结果。


30.3 答题示例

Unity中使用的是左手坐标系。其轴方向定义为:X轴指向右方,Y轴指向上方,Z轴指向屏幕外侧(即从屏幕内向用户方向)。

使用时需要注意以下几点:

  1. 旋转方向遵循左手定则:绕轴旋转时,拇指指向轴的正方向,四指弯曲的方向为旋转的正方向。例如绕Y轴正方向旋转时,物体顺时针转动(从顶视图看)。

  2. 向量叉乘结果差异:左手坐标系中,向量叉乘(Vector3.Cross(a, b))的结果方向与右手坐标系相反。例如Cross(Vector3.right, Vector3.up)在Unity中返回Vector3.forward(Z轴正方向),而右手坐标系中可能返回相反方向,计算时需注意逻辑正确性(如判断面朝向)。

  3. 与其他软件的坐标系兼容问题:许多3D建模软件(如Blender、Maya默认使用右手坐标系),导入模型时可能出现Z轴翻转(模型朝向异常),需在导入设置中勾选”Swap YZ”或调整旋转补偿。

  4. 相机朝向Camera.transform.forward 为世界空间中镜头注视方向(与物体 transform.forward 语义一致)。位移用 camera.transform.forward / Translate,勿笼统说成「世界 -Z 才是前方」——默认主相机常沿世界 +Z 看向场景内。

  5. 物理系统与碰撞检测:物理引擎(如PhysX)适配左手坐标系,刚体运动、射线检测(Physics.Raycast)的方向计算需基于左手坐标系规则,避免因方向错误导致检测失效。


30.4 关键词联想

  • 左手坐标系
  • 轴方向(X右、Y上、Z外)
  • 左手定则(旋转方向)
  • 向量叉乘(Cross)结果差异
  • 与建模软件的坐标系差异(如Blender右手系)
  • Camera.transform.forward(注视方向)
  • 物理引擎适配
  • 模型导入补偿(Swap YZ)
  • 旋转正方向(顺时针/四指弯曲方向)


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏