Unity3D方向键控制人物移动的代码

代码

var v = Input.GetAxis("Vertical");
var h = Input.GetAxis("Horizontal");
transform.Translate(transform.forward * Time.deltaTime * moveSpeed * v, Space.World);
transform.Rotate(transform.up * Time.deltaTime * rotateSpeed * h);

也可以换成

var v = Input.GetAxis("Vertical");
var h = Input.GetAxis("Horizontal");
transform.Translate(new Vector3(0, 0, 1) * Time.deltaTime * moveSpeed * v);
transform.Rotate(transform.up * Time.deltaTime * rotateSpeed * h);

注意点

Translate函数默认模式是Space.Self,此时移动方向需要为人物坐标系下的人物前进方向Vector3(0, 0, 1);如果模式指定为Space.World,移动方向应该为世界坐标系下的人物前进方向transform.forwardtransform.forward在人物转向过程中会改变。如果不注意这个问题,人物转向后前进动作会出问题,比如斜着前进或者横着走。

Rotate函数则没有这个问题,这是因为在人物转向过程,Rotate函数的旋转轴不会变化,所以transform.upVector3(0, 1, 0)可以和Space.WorldSpace.Self任意组合。

你可能感兴趣的:(Unity3D,Unity3D,人物移动)