Unity中Transform移动相关

路程 = 方向 * 速度 * 时间

参数一:表示位移多少  路程 = 方向 * 速度 * 时间
参数二:表示 相对坐标系   默认 该参数 是相对于自己坐标系的

相对于世界坐标系的 Z轴 动  始终是朝 世界坐标系 的 Z轴正方向移动
this.transform.Translate(Vector3.forward * 1 * Time.deltaTime, Space.World);

相对于世界坐标的 自己的面朝向去动   始终朝自己的面朝向移动
this.transform.Translate(this.transform.forward * 1 * Time.deltaTime, Space.World);

相对于自己的坐标系 下的 自己的面朝向向量移动 (一定不会这样让物体移动) XXXXXXX
this.transform.Translate(this.transform.forward * 1 * Time.deltaTime, Space.Self);

相对于自己的坐标系 下的 Z轴正方向移动  始终朝自己的面朝向移动
this.transform.Translate(Vector3.forward * 1 * Time.deltaTime, Space.Self);

图例

假如一个物体是在Y轴旋转了45度

(1)先在世界坐标系取(0,0,1),然后在世界坐标系上向(0,0,1)移动,所以是朝世界坐标系 的Z轴正方向移动

(2)先在世界坐标系取以自己正方向的向量,也就是这个斜着45°的Z轴方向,再把这个方向放在世界坐标系上移动,所以最终是朝自己面朝向移动

(3)先在世界坐标系取以自己正方向的向量,也就是这个斜着45°的Z轴方向,再把这个方向放在自己的坐标系上移动,所以最终是朝着世界坐标系X轴方向移动

(4)先在世界坐标系取(0,0,1),然后在自己的坐标系上向(0,0,1)移动,所以最终是朝自己面朝向移动

其实如果不去细究的话,就把Vector3里面自带的方向当成自己的方向用就行了

比如向面朝向移动

this.transform.Translate(Vector3.forward * 1 * Time.deltaTime);

 向上动

this.transform.Translate(Vector3.up * 1 * Time.deltaTime;

猜你喜欢

转载自blog.csdn.net/holens01/article/details/132639486