问题描述:
当transform.translate(vector3.forward*time.deltatime);//物体会沿着本物体Z轴的方向移动,就算本物体旋转了一定角度之后也是沿着Scene面板中的z轴方向移动。
而transform.translate(transform.forward*time.deltatime);//当物体不旋转的时候会沿着scene面板中的z轴移动,当物体旋转一点角度后物体就不再沿着scene面板中的z轴移动了。
为什么?
因为vector3.forward才是真正的本物体的z轴(永远)
而transform.forward则类似于是在本物体下新建一个空物体,这个空物体是本物体的子级,而transform.forward是这个空物体的本地坐标Z轴。当父级旋转30°,则这个空物体实际上相对于世界坐标轴旋转了30°+30°(子级的local本来就是以父级为世界中心的,父级旋转30°相当于子级的相对于父级的世界旋转了30°,所以子级旋转了60°)、
//简单理解就是:使用translate的时候用vector3.forward,若使用transform.forward则若自己旋转B°,则自己会朝着2*B°的方向移动