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 轴。