在unity中时常需要控制移动,
1.简单的类似坦克大战的移动
//速度
float speed = 1.0f;
//按下上
if (Input.GetKey(KeyCode.UpArrow)) {
transform.eulerAngles = new Vector3(0, 0, 0);
transform.position += transform.forward * speed;
}
//按下下
if (Input.GetKey(KeyCode.DownArrow))
{
transform.eulerAngles = new Vector3(0, 180, 0);
transform.position += transform.forward * speed;
}
//按下左
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.eulerAngles = new Vector3(0, 270, 0);
transform.position += transform.forward * speed;
}
//按下右
if (Input.GetKey(KeyCode.RightArrow))
{
transform.eulerAngles = new Vector3(0, 90, 0);
transform.position += transform.forward * speed;
}
在Update中添加这段代码,可以简单的控制移动,移动方式类似经典的坦克大战。
2.
上面那个不能满足大部分的需求
前后键行走,左右键旋转,这个的简单实现:
//旋转
float steer = 20;//转速
float x = Input.GetAxis("Horizontal");//获得横轴值
transform.Rotate(0, x * steer * Time.deltaTime, 0);//每帧旋转
//前进后退
float speed = 3.0f;
float y = Input.GetAxis("Vertical");
Vector3 s = y * transform.forward * speed * Time.deltaTime;
transform.position += s;
获取虚拟轴的值,运行如果想WASD键不起作用,可以直接到编辑器里设置。