【问题标题】:Can anyone help me with Mathf.Clamp in Unity for setting camera rotation limits?谁能帮助我在 Unity 中使用 Mathf.Clamp 设置相机旋转限制?
【发布时间】:2020-06-28 09:31:12
【问题描述】:

我一直在关注 Unity in Action 这本书,但我遇到了第一人称相机垂直旋转代码的问题。

sensitivityVert = 9.0f;

public float minimumVert = -45.0f;
public float maximumVert = 45.0f;
private float _rotationX = 0;

void Update()
{
   _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
   _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);

   float rotationY = transform.localEulerAngles.y;
   transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
}

问题在于,Clamp 没有限制相机可以移动的位置,而是根据提供的 2 个值将相机冻结在某个位置,并且不会根据鼠标输入执行任何操作。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: c# unity3d rotation clamp


    【解决方案1】:

    你需要为欧拉角重写clamp,因为当你从变换中得到一个角度时,你总是得到一个正角。

    public static float RestrictAngle(float angle, float angleMin, float angleMax)
    {
        if (angle > 180)
            angle -= 360;
        else if (angle < -180)
            angle += 360;
    
        if (angle > angleMax)
            angle = angleMax;
        if (angle < angleMin)
            angle = angleMin;
        return angle;
    }
    

    【讨论】:

    • 非常感谢您的回答!不幸的是,同样的事情发生了,但我发现无论出于何种原因,我的检查员都将脚本的最小值和最大值都覆盖为 45,这导致它卡在那里。
    • 在统一论坛上的这么多答案中,这是唯一一个对我有用的!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多