您的位置:首页 > 移动开发 > Unity3D

Unity tranform.Tranlate(transform.forward)不按设想移动的问题

2017-11-12 23:15 225 查看
Unity中物体的坐标分为世界空间坐标和本地空间坐标。



新建一个cube,不旋转,随意移动cube位置,输出transform.forward 发现它始终是(1,0,0)。也就是本地坐标方向是相对于世界坐标原点来识别的。



将cube旋转45°,再输出transform.forward,结果是(0.7,0,0.7)。

这个时候给cube一段控制代码:transform.Translate(transform.forward);

会发现,cube并不是沿着图中transform.forward方向移动的

查看脚本手册: Translate (translation : Vector3, relativeTo : Space = Space.Self)

可以看到这个函数第二个参数默认是本地坐标空间,也就是说此时移动是参考本地坐标空间来移动的。

因为transform.forward 数值表达为(0.7, 0 ,0.7),然后cube要将自身朝着相对于自身坐标系的(0.7, 0 , 0.7)方向移动,也就是下图:



所以,此时cube会相对于世界空间坐标的z轴负方向运动。

解决方法:只要将第二个参数设置为Space.wrod。Cube就会沿着自身的Z轴运动了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: