void Update()
{
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
float y = Input.GetAxis("Jump");
Vector3 dir=new Vector3(x,y,z);
if(dir!=Vector3.zero)
{
transform.rotation=Quaternion.LookRotation(dir);
transform.Translate(Vector3.forward * 2 * Time.deltaTime);
}
}
分别用X,Y,Z接受三个方向的虚拟轴用于确定方向;
dir向量确定方向
如果dir为0代表什么都没按
用rotation方法实现旋转
translate实现方向的变化。
但是这样解决有一个问题
当我向让他向上移动时会突然转向,由于按下space向量为(0,0,1)所以朝向的方向变为了向上,这明显与我们的需求不符合。
一下我们介绍一下translate方法
transform.Translate()函数中,前一个变量是物体的移动速度,这里的速度是一个矢量,既包含大小写包含方向,后一个变量是相对坐标系,这里的相对坐标系有两个值,一个是世界坐标,一个是自身坐标,如果第一个坐标不填写的话,默认为自身坐标系。如果 Space.World 则相对于世界坐标系应用运动