问题描述:
在物体移动时方向键能改变物体的朝向,但是不能准确朝着朝向移动。特别是想让他它后走时,朝向是往后了,但是向前走了。
问题总结:
这里涉及到transform.translate与position的的区别——代码中translate是默认相对自己物体的坐标系而不是像position那样相对于世界坐标系。因此只要使用translate时,把参数修改为相对于世界坐标系即可,或者使用transform.position函数。这个区别实际上是十分基础的,但是我忽视了:(
具体过程:
// before
input = input.normalized;
transform.Translate(input * speed * Time.deltaTime);
if (input.magnitude > 0.1f)
{
transform.forward = input;
}
当我按“下”方向键想面朝后方然后往后移动时 ,发现只能面朝后方然而向前移动。原因就是此时它是相对于自身的坐标系的。当我面朝后方时,我按了“下”,此时也就是往我面朝方向的反方向移动了。
// after
input = input.normalized;
// 方法1
transform.Translate(input * speed * Time.deltaTime, Space.World);
// 方法2
//transform.position += input * speed * Time.deltaTime;
if (input.magnitude > 0.1f)
{
transform.forward = input;
}
修改后,就能正常移动啦。