前言
- 在写代码的时候经常会遇到要让物体看向自己的前方或者是朝自己的前向运动即下面这句
transform.translate(Vector3.forward*Time.deltaTime*speed )
- 当时只是照着别人的代码写,并没有想那么多为什么,后来发现在Unity中有两个up,即
Vector3.up, Vector3.down ......
上下左右前后6个方位transform.up, transform.right, transform.forward
xyz三个坐标轴
先简述一下两者的区别
- Vector3 只是单纯的简写形式对于(0,0,1)这些值而言不会受到任何影响
- 所以Vector3的属性值在不同的坐标系里面都表示相同的方向。
- transform的属性是物体自身坐标轴在世界坐标系中的坐标
- 物体的移动不会影响坐标轴的大小。
- 但是当物体发生转动时候,坐标轴的大小就发生了变化。
- transform.forward官方解释是世界坐标系下物体的正方向
- 即物体的局部z轴对应的世界方向
- 不过我很疑惑,为什么物体发生移动的时候,坐标轴的大小不发生变化呢
使用
- 根据圣典百科的解释
- 如果relativeTo留空或者设置为Space.Self,移动被应用相对于变换的自身轴。(当在场景视图选择物体时,x、y和z轴显示)如果相对于Space.World 移动被应用相对于世界坐标系统。
- 因此translate默认是沿着自身坐标系运动
transform.translate(vector3.forward,space.self)
沿着自身坐标系的前向前进transform.translate(vector3.forward,space.world)
沿着世界坐标前进transform.translate(transform.forward,space.self)
建议不是特殊需要别用这个用法。- 它所表述的含义是,让物体在自身坐标系里面,按照自己坐标在世界坐标的前向偏移 ,进行移动
延伸博客
- 当初粗略看过这个博客,没有在意,今天在看,又加上我自己的思考,就豁然开朗了,希望朋友们也学有所得
- https://blog.csdn.net/kaluluosi111/article/details/17206655