这段脚本演示了 FPS 游戏中角色的基本移动与旋转控制:通过监听 W / A / S / D 四个按键驱动角色在当前朝向上前后左右平移,并同步切换动画状态;再通过鼠标 X 轴输入实时旋转角色朝向。注释里还保留了另一种基于 Input.GetAxis 和 Rigidbody.MovePosition 的备选方案,可作为对照参考。
示例代码
//move controll
bool isMove = false;
if (Input.GetKey(KeyCode.W))
{
transform.Translate(Vector3.forward * _moveSpeed);
isMove = true;
}
if (Input.GetKey(KeyCode.S))
{
transform.Translate(Vector3.back * _moveSpeed);
isMove = true;
}
if (Input.GetKey(KeyCode.A))
{
transform.Translate(Vector3.left * _moveSpeed);
isMove = true;
}
if (Input.GetKey(KeyCode.D))
{
transform.Translate(Vector3.right * _moveSpeed);
isMove = true;
}
animation.SetBool("IsMoving", isMove);
// Vector3 mov = new Vector3(Input.GetAxis("Horizontal"), 0f,
// Input.GetAxis("Vertical"));
// GetComponent<Rigidbody>().MovePosition(transform.position + mov);
//rotation controll
float y = Input.GetAxis("Mouse X");
if (y != 0)
{
transform.Rotate(0, _rotationSpeed * y + transform.rotation.y, 0);
}