Input.GetAxis("鼠标 X")、Input.GetAxis("鼠标 Y") 始终返回 0

アーテ*_*ィスト 6 c# unity-game-engine

我为 3D 射击游戏添加了主要用户对象,为其附加了摄像头,并尝试捕捉脚本代码中移动的鼠标,附加到玩家游戏对象。但不能使用Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"),因为它们总是为零。为什么?我做错了什么?Input.GetAxis("Vertical")而且Input.GetAxis("Horizontal")按键效果很好。

using UnityEngine;
using System.Collections;

public class MouseLook : MonoBehaviour {

  public enum RotationAxes {
    MouseXAndY = 0,
    MouseX = 1,
    MouseY = 2
  }

  public RotationAxes axes = RotationAxes.MouseXAndY;
  public float sensitivityHor = 9.0f;
  public float sensitivityVert = 9.0f;
  public float minimumVert = -45.0f;
  public float maximumVert = 45.0f;
  private float _rotationX = 0;

  void Start() {
    Rigidbody body = GetComponent<Rigidbody>();
    if (body != null)
      body.freezeRotation = true;
  }

  void Update() {
    Debug.Log(Input.GetAxis("Mouse X"));
    Debug.Log(Input.GetAxis("Mouse Y"));
    if (axes == RotationAxes.MouseX) {
      transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0);
    } else if (axes == RotationAxes.MouseY) {
      _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
      _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
      float rotationY = transform.localEulerAngles.y;
      transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
    } else {
      _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
      _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
      float delta = Input.GetAxis("Mouse X") * sensitivityHor;
      float rotationY = transform.localEulerAngles.y + delta;
    }
Run Code Online (Sandbox Code Playgroud)

我期望 ) 的输出Input.GetAxis("Mouse X"从 -1 到 1,但实际输出是 0。我在 中看到它Debug.Log

Moh*_*ian 2

检查您的统一输入设置,Mouse XMouse Y应定义如下:

在此输入图像描述