如何让这个相机运动更流畅?
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;
我正在制作一款游戏,我希望相机在一定范围内移动,我已经有了相应的脚本,但我真的希望相机更流畅,如果可能的话。
谢谢!
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;