这段脚本演示了 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);
                        }