如何在 Unity C# 中限制相机移动
How to make limited camera movement in Unity C#
我正在使用 Unity 制作 FNAF 粉丝游戏,我需要有限的相机移动,如本视频所示。我一直在努力解决这个问题,但没有找到任何教程或任何答案。如果你能 link 一个脚本,我将非常感激!
将此代码附加到 camera
,您可以通过在检查器中设置两个角度来限制相机移动。请记住,此代码限制 localEulerAngles
值并且始终必须将相机旋转设置为零,要调整其旋转,请将相机作为 empty object
的子级放置,然后旋转父级。
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;
}
}
我正在使用 Unity 制作 FNAF 粉丝游戏,我需要有限的相机移动,如本视频所示。我一直在努力解决这个问题,但没有找到任何教程或任何答案。如果你能 link 一个脚本,我将非常感激!
将此代码附加到 camera
,您可以通过在检查器中设置两个角度来限制相机移动。请记住,此代码限制 localEulerAngles
值并且始终必须将相机旋转设置为零,要调整其旋转,请将相机作为 empty object
的子级放置,然后旋转父级。
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;
}
}