C# 如何限制变换。旋转(浮动,0,0)?

C# 如何限制变换。旋转(浮动,0,0)?,c#,unity3d,C#,Unity3d,我知道谷歌有一些答案,但我不能用代码限制轮换: pitch = cameraDirectionSpeed * Input.GetAxis("Mouse Y"); cameraPivot.transform.Rotate(-pitch, 0, 0, Space.Self); 我希望在X轴上有0到90的限制 谢谢大家! 改用四元数 public Vector3 rotation; private GameObject go; private void Start() { go = Ga

我知道谷歌有一些答案,但我不能用代码限制轮换:

pitch = cameraDirectionSpeed * Input.GetAxis("Mouse Y");

cameraPivot.transform.Rotate(-pitch, 0, 0, Space.Self);
我希望在X轴上有090的限制


谢谢大家!

改用四元数

public Vector3 rotation;
private GameObject go;

private void Start()
{
    go = GameObject.CreatePrimitive(PrimitiveType.Cube);
}

void Update()
{
    go.transform.rotation = Quaternion.Euler(Mathf.Clamp(rotation.x, 0, 90), 
    rotation.y, rotation.z);
}


因此,添加一些代码来钳制
节距
值?它不以这种方式工作。这是旋转功能。夹紧什么都不会给你。当然,它是有效的,你只需要自己弄清楚逻辑。(提示:尝试将
pitch
添加到
transform.localeurangles.x
中,然后查看结果)我知道我可以使用localeurangles,但我需要旋转函数的限制。请阅读问题。旋转添加旋转,而不是设置。我尝试过各种方法来解决这个问题。都不管用<代码>cameraPivot.transform.localRotation=Quaternion.Euler(Mathf.Clamp(螺距,0,90),0,0)@Orson我向您展示了它的工作原理,但我添加了您需要的内容。谢谢。似乎设置了旋转而不是添加。有没有办法对旋转功能进行一些限制?旋转效果很好,但我需要限制俯仰旋转。怎么做?@Orson你想干什么?为什么需要旋转()简而言之很难解释。我需要Rotate(),因为我已经为我的相机实现了许多控件,如果我们开始使用偏航或俯仰,相机不应该意外移动。Rotate()将旋转添加到现有的旋转中,不会导致任何不必要的“跳跃”。其他解决方案会导致这些“跳跃”。我已经尝试了所有我知道的,只有Rotate()可以完美地工作。
public class CameraClamp : MonoBehaviour
{
    public float speed;
    public Vector2 clamp; // x = min, y = max
    private float pitch;

    private void Update()
    {
        pitch += Input.GetAxis("Mouse Y") * speed * Time.deltaTime;
        //pitch -= Input.GetAxis("Mouse Y") * speed * Time.deltaTime; // Invert
        pitch = Mathf.Clamp(pitch, clamp.x, clamp.y);
    }

    private void LateUpdate()
    {
        gameObject.transform.rotation = Quaternion.Euler(pitch, 0, 0);
    }
}