Unity3D Input.GetAxis for Mouse不一致

时间:2019-05-03 04:58:31

标签: unity3d

我正在基于mouseInput进行相机旋转,我希望它在所有帧速率下都具有一致的灵敏度。根据统一文档,Input.GetAxis应该固有地与鼠标移动无关的帧速率。

我发现的是,当我使用下面的代码并将帧速率从200+更改为30时,Input.GetAxis返回的输出非常不同。对于200+ fps,GetAxis在2-5左右较低,而对于30 fps,对于相同的鼠标移动,GetAxis返回10-15。它会在游戏中引起极大的灵敏度差异。我想念什么吗?谢谢

    public Rigidbody _playerRigidBody;
private Vector2 _lookInput;
private void Start()
{
    //Application.targetFrameRate = 30;
}
private void Update()
{
    _lookInput.x = Input.GetAxis("Mouse X"); 

}

void FixedUpdate()
{
    var sensitivity = 300f;
    var newPlayerRotation = _playerRigidBody.rotation * Quaternion.Euler(_lookInput.x * sensitivity * Vector3.up * Time.deltaTime);
    _playerRigidBody.MoveRotation(newPlayerRotation);

}

}

我已经测试了这个小功能中的所有内容,唯一引起问题的是Input.GetAxis。其不一致。有任何想法或解决方案或解决方法吗?

1 个答案:

答案 0 :(得分:1)

“独立于帧率”是指该值取决于鼠标的移动,并不意味着该值是一致的。

对于帧速率= 200,值= 2-5表示鼠标在1/200秒内移动2-5点。

因此,要获得1秒使用时间内的移动距离:

_lookInput.x = Input.GetAxis("Mouse X") / Time.deltaTime;