如何让这个相机运动更流畅?

How to make this camera movement smoother?

我正在制作一款游戏,我希望相机在一定范围内移动,我已经有了相应的脚本,但我真的希望相机更流畅,如果可能的话。

谢谢!

public class LimitedCamera : MonoBehaviour
{

    public float LimitAngleX = 10f;
    public float LimitAngleY = 10f;

    private float AngleX;
    private float AngleY;
    public void Update()
    {
        var angles = transform.localEulerAngles;

        var xAxis = Input.GetAxis("Mouse X");
        var yAxis = Input.GetAxis("Mouse Y");

        AngleX = Mathf.Clamp(AngleX - yAxis, -LimitAngleX, LimitAngleY);
        AngleY = Mathf.Clamp(AngleY + xAxis, -LimitAngleY, LimitAngleY);

        angles.x = AngleX;
        angles.y = AngleY;

        transform.localRotation = Quaternion.Euler(angles);

        transform.localEulerAngles = angles;
    }
}

在你的 LimitedCamera class:

public static float MouseSensitivityX = 0.1f;
public static float MouseSensitivityY = 0.1f;

并且在您的 Update() 方法中:

var xAxis = Input.GetAxis("Mouse X") * MouseSensitivityX;
var yAxis = Input.GetAxis("Mouse Y") * MouseSensitivityY;

您还可以使用 PlayerPrefs 在设置菜单中更改灵敏度。

解决方案是在 InputAxis 中乘以 Time.deltaTime 来平滑相机。这种方法抑制了游戏的帧波动,也使得在较弱的系统上更流畅。

var xAxis = Input.GetAxisRaw("Mouse X") * Time.unscaledDeltaTime * sensitivity;
var yAxis = Input.GetAxisRaw("Mouse Y") * Time.unscaledDeltaTime * sensitivity;

您还可以通过更改 sensitivity 变量来控制速度。

public float sensitivity = 10f;