我正在基于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。其不一致。有任何想法或解决方案或解决方法吗?
答案 0 :(得分:1)
“独立于帧率”是指该值取决于鼠标的移动,并不意味着该值是一致的。
对于帧速率= 200,值= 2-5表示鼠标在1/200秒内移动2-5点。
因此,要获得1秒使用时间内的移动距离:
_lookInput.x = Input.GetAxis("Mouse X") / Time.deltaTime;