30.Unity中的坐标系及注意事项
30.1 题目
Unity中使用的是左手还是右手坐标系?我们需要注意什么?
30.2 深入解析
Unity中使用的是左手坐标系。在左手坐标系中,X轴指向右侧,Y轴指向上方,Z轴指向屏幕外。与之相反,右手坐标系中,X轴仍然指向右侧,Y轴仍然指向上方,但Z轴指向屏幕内。
在进行向量相关计算时,需要注意左手和右手坐标系的区别。例如,在进行旋转、法线计算等操作时,如果不了解使用的是左手还是右手坐标系,可能会导致错误的结果。
30.3 答题示例
Unity中使用的是左手坐标系。其轴方向定义为:X轴指向右方,Y轴指向上方,Z轴指向屏幕外侧(即从屏幕内向用户方向)。
使用时需要注意以下几点:
旋转方向遵循左手定则:绕轴旋转时,拇指指向轴的正方向,四指弯曲的方向为旋转的正方向。例如绕Y轴正方向旋转时,物体顺时针转动(从顶视图看)。
向量叉乘结果差异:左手坐标系中,向量叉乘(
Vector3.Cross(a, b))的结果方向与右手坐标系相反。例如Cross(Vector3.right, Vector3.up)在Unity中返回Vector3.forward(Z轴正方向),而右手坐标系中可能返回相反方向,计算时需注意逻辑正确性(如判断面朝向)。与其他软件的坐标系兼容问题:许多3D建模软件(如Blender、Maya默认使用右手坐标系),导入模型时可能出现Z轴翻转(模型朝向异常),需在导入设置中勾选”Swap YZ”或调整旋转补偿。
相机朝向:
Camera.transform.forward为世界空间中镜头注视方向(与物体transform.forward语义一致)。位移用camera.transform.forward/Translate,勿笼统说成「世界 -Z 才是前方」——默认主相机常沿世界 +Z 看向场景内。物理系统与碰撞检测:物理引擎(如PhysX)适配左手坐标系,刚体运动、射线检测(
Physics.Raycast)的方向计算需基于左手坐标系规则,避免因方向错误导致检测失效。
30.4 关键词联想
- 左手坐标系
轴方向(X右、Y上、Z外)左手定则(旋转方向)向量叉乘(Cross)结果差异与建模软件的坐标系差异(如Blender右手系)Camera.transform.forward(注视方向)- 物理引擎适配
模型导入补偿(Swap YZ)旋转正方向(顺时针/四指弯曲方向)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com