1.运用普通的方法
if (Input.GetKey(KeyCode.W))
{
this.transform.position += this.transform.forward * speed * Time.deltaTime;//控制物体朝向物体面朝向移动
}
else if (Input.GetKey(KeyCode.S))
{
this.transform.position += this.transform.forward * -speed * Time.deltaTime;//负号表示的是与原来相反的方向
}
else if (Input.GetKey(KeyCode.A))
{
//this.transform.position += this.transform.right * -rotatespeed * Time.deltaTime;//测试效果不好所以换旋转
transform.Rotate(Vector3.up * -rotatespeed * Time.deltaTime);
}
else if (Input.GetKey(KeyCode.D))
{
//this.transform.position += this.transform.right * rotatespeed * Time.deltaTime;
transform.Rotate(Vector3.up * rotatespeed * Time.deltaTime);
}
前面的speed(直行速度) 和 rotatespeed(转速)的声明比较简单我就不写了
2.改进方法
public float speed;//水平速度的大小
public float rotatespeed;//垂直的速度的大小
float translation = Input.GetAxis("Vertical") * speed*Time.deltaTime;
// 0 变为 +1 或 -1 简单理解就是按下 W 返回的是1 按下S返回的是-1 实际是-1到1之间数的变化
float rotate = Input.GetAxis("Horizontal") *rotatespeed * Time.deltaTime;
transform.Translate(0, 0, translation);
transform.Rotate(0, rotate, 0);
public float speed;
public float rotatespeed;
private float inputx;
private float inputy;
void Update()
{
inputx = Input.GetAxis("Horizontal");
inputy = Input.GetAxis("Vertical");
transform.Translate(Vector3.forward * speed * inputy * Time.deltaTime);
transform.Rotate(Vector3.up*rotatespeed*Time.deltaTime* inputx);
}
希望能和大家好好交流,一起学习