Vector3.forward和transform.forward的坑

一:物体无旋转时

transform.Translate(Vector3.forward * Time.deltaTime);
transform.Translate(transform.forward * Time.deltaTime);
transform.position += transform.forward * Time.deltaTime;
transform.position += Vector3.forward * Time.deltaTime;

此时物体无旋转,世界坐标=局部坐标,所以以上四种方法的效果相同,物体朝向(0,0,1)方向移动


二:物体有旋转时

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

第一种方法物体会朝向自身的Z轴方向移动
第二种方法会出现很奇怪的移动方向,建议不要使用

transform.Translate(transform.forward * Time.deltaTime,Space.World);
transform.Translate(Vector3.forward * Time.deltaTime,Space.World);

第一种方法物体会朝向自身的Z轴方向移动
第二种方法物体会朝向世界坐标的Z轴方向移动


三:总结

Vector3.forward的值永远等于(0,0,1)
transform.forward的值等于当前物体自身Z轴在世界坐标轴上的指向,不一定等于(0,0,1),但是它的magnitude永远等于1

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

猜你喜欢

转载自blog.csdn.net/LLLLL__/article/details/103199141