Unity八 translate、transform.forward、Vector3.forward

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

沿着自身坐标系的 z 轴向前移动。注意时自身坐标系

 transform.position+=transform.forward * Time.deltaTime;

沿着自身坐标系的 z 轴向前移动。注意时自身坐标系

transform.position +=Vector3.forward*Time.deltaTime;

沿着世界坐标系的 z 轴向前移动,注意时世界坐标系。

理解

1、Vector3.forward是坐标(0, 0, 1)缩写。当直接操作在 position 上时,会使游戏对象沿着世界坐标系的 z 轴移动

2、transform.forward内部做了对坐标系的转换,使物体沿着自身坐标系的 z 轴移动,同理 transform.Translate(Vector3.forward)也是一样。

3、那么思考个问题, transform.Translate(transform.forward)会向什么方向移动呢。
答案是:既不是世界坐标系的 z 轴,也不是自身坐标系的 z 轴。
因为transform.forward是一个变值,它代表物体的前方向量,也就是自身坐标系z 轴的方向,会根据物体旋转量算出来,如果物体不断在旋转,这个transform.forward也是会根据物体变化的。
同样 translate方法也是一样。那么这两个方向叠加就会出现别的效果。导致既不是世界坐标系 z 轴,也不是自身坐标系 z 轴。

发布了56 篇原创文章 · 获赞 24 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/u014196765/article/details/88929642