一、左手坐标系与右手坐标系
常见的三维软件都采用笛卡尔坐标系,也就是常见的xyz轴坐标系。笛卡尔坐标系可以是左手坐标系也可以是右手坐标系,如下图所示
两种坐标系是镜像对称的。而Unity采用左手系,且xyz轴的默认方向与图中的左手系完全一样,分别对应右、上、前。
总结如下:
- x:右,(1,0,0),红,Vector3.right
- y:上,(0,1,0),绿,Vector3.up
- z:前,(0,0,1),蓝,Vector3.forward
二、世界坐标系与局部坐标系
这两个的区别就在于参照系不同,就像高中物理中的相对位置一样。
世界坐标系是以场景本身为坐标来确认的,局部坐标系是以该物体的父物体为坐标系来确认的。更深一层次讲,编辑器面板上的坐标数值,全都可以理解为局部坐标系的数值。对于第一级物体来说,其父节点就是场景本身,所以其局部坐标系=世界坐标系
下面介绍一些例子:
Vector3 worldpos=transform.position;//获取世界坐标
Vector3 localPos=transform.localPosition;//获取局部坐标
//旋转
Quaternion worldRotation=transform.rotation;
Quaternion localRotation=transform.localRotation;
//在父物体局部坐标系下的缩放。无法直接获得世界坐标的缩放
Vector3 localScale=transform.localScale;