一.左手坐标系和右手坐标系
1.左手坐标系: 伸开我们的左手, 掌心向外, 大拇指与食指成90度, 中指、无名指和小指弯曲, 大拇指指向的方向就是X轴正方向, 食指指向的方向就是Y轴正方向, 中指、无名指和小指指向的方向就是Z轴正方向。
2.右手坐标系: 伸开我们的右手, 掌心向内, 大拇指与食指成90度, 中指、无名指和小指弯曲, 大拇指指向的方向就是X轴正方向, 食指指向的方向就是Y轴正方向, 中指、无名指和小指指向的方向就是Z轴正方向。
3.左手坐标系和右手坐标系中, X轴和Y轴的方向是相同的, Z轴的方向相反。
二.世界坐标系和世界坐标
1.在unity中, 每个scene都有唯一的一个世界坐标系。世界坐标系也是一个左手坐标系。一般常见的用法, 是使得X正方向为正右方, Y正方向为正上方, Z正方向为正前方。
2.世界坐标: 在场景中, 有一个坐标原点(0,0,0), 所有物体都是根据与它的相对位置来得到自己的世界坐标。挂载在游戏对象上的脚本可以通过transform.position来获得世界坐标。
3.X轴的正方向: Vector3.right等价于(1, 0, 0)
4.X轴的负方向: Vector3.left等价于(-1, 0, 0)
5.Y轴的正方向: Vector3.up等价于(0, 1, 0)
6.Y轴的负方向: Vector3.down等价于(0, -1, 0)
7.Z轴的正方向: Vector3.forward等价于(0, 0, 1)
8.Z轴的负方向: Vector3.back等价于(0, 0, -1)
三.本地坐标系和本地坐标
1.本地坐标系: 在unity中, 有一个肉眼可见的本地坐标系, 当我们选中一个物体时, 就会显示出其本地坐标系。本地坐标系也是一个左手坐标系。
2.本地坐标: 如果游戏对象没有父对象, 我们可以认为它的世界坐标和本地坐标都是相对于(0,0,0)点来说的, 本地坐标和世界坐标相等。如果游戏对象有父对象, 它的本地坐标是相对于父亲来说的。挂载在游戏对象上的脚本可以通过transform.localPosition来获得本地坐标。
四.实例
1.创建一个WLPosition的工程
2.在Project视图中创建Resources、Scene、Script三个文件夹
3.保存当前场景GameScene到Scene目录下
4.在Hierarchy视图中, 创建一个空的GameObject游戏对象Project属性为(0,0,0)和一个Cube游戏对象Project属性为(0,0,0); 并且在Project视图的Script目录下创建一个WLPosition脚本, 同时绑定WLPosition脚本到Cube上。
1.左手坐标系: 伸开我们的左手, 掌心向外, 大拇指与食指成90度, 中指、无名指和小指弯曲, 大拇指指向的方向就是X轴正方向, 食指指向的方向就是Y轴正方向, 中指、无名指和小指指向的方向就是Z轴正方向。
2.右手坐标系: 伸开我们的右手, 掌心向内, 大拇指与食指成90度, 中指、无名指和小指弯曲, 大拇指指向的方向就是X轴正方向, 食指指向的方向就是Y轴正方向, 中指、无名指和小指指向的方向就是Z轴正方向。
3.左手坐标系和右手坐标系中, X轴和Y轴的方向是相同的, Z轴的方向相反。
二.世界坐标系和世界坐标
1.在unity中, 每个scene都有唯一的一个世界坐标系。世界坐标系也是一个左手坐标系。一般常见的用法, 是使得X正方向为正右方, Y正方向为正上方, Z正方向为正前方。
2.世界坐标: 在场景中, 有一个坐标原点(0,0,0), 所有物体都是根据与它的相对位置来得到自己的世界坐标。挂载在游戏对象上的脚本可以通过transform.position来获得世界坐标。
3.X轴的正方向: Vector3.right等价于(1, 0, 0)
4.X轴的负方向: Vector3.left等价于(-1, 0, 0)
5.Y轴的正方向: Vector3.up等价于(0, 1, 0)
6.Y轴的负方向: Vector3.down等价于(0, -1, 0)
7.Z轴的正方向: Vector3.forward等价于(0, 0, 1)
8.Z轴的负方向: Vector3.back等价于(0, 0, -1)
三.本地坐标系和本地坐标
1.本地坐标系: 在unity中, 有一个肉眼可见的本地坐标系, 当我们选中一个物体时, 就会显示出其本地坐标系。本地坐标系也是一个左手坐标系。
2.本地坐标: 如果游戏对象没有父对象, 我们可以认为它的世界坐标和本地坐标都是相对于(0,0,0)点来说的, 本地坐标和世界坐标相等。如果游戏对象有父对象, 它的本地坐标是相对于父亲来说的。挂载在游戏对象上的脚本可以通过transform.localPosition来获得本地坐标。
四.实例
1.创建一个WLPosition的工程
2.在Project视图中创建Resources、Scene、Script三个文件夹
3.保存当前场景GameScene到Scene目录下
4.在Hierarchy视图中, 创建一个空的GameObject游戏对象Project属性为(0,0,0)和一个Cube游戏对象Project属性为(0,0,0); 并且在Project视图的Script目录下创建一个WLPosition脚本, 同时绑定WLPosition脚本到Cube上。
5.代码
using UnityEngine;
public class WLPosition : MonoBehaviour
{
void Start ()
{
Debug.Log ("Cube的世界坐标: "+ transform.position);
Debug.Log ("Cube的本地坐标: "+ transform.localPosition);
Debug.Log ("X轴的正方向: " + Vector3.right);
Debug.Log ("X轴的负方向: " + Vector3.left);
Debug.Log ("Y轴的正方向: " + Vector3.up);
Debug.Log ("Y轴的负方向: " + Vector3.down);
Debug.Log ("Z轴的正方向: " + Vector3.forward);
Debug.Log ("Z轴的负方向: " + Vector3.back);
}
}
6.改变Cube的位置坐标Position(1,1,1), 运行测试7.把Cube拖拽到GameObject下, GameObject的Position设置为(1,1,1), Cube的Position设置为(1,1,1), 运行测试