如何限制transform.Rotate(float,0,0)?

问题描述 投票:-1回答:1

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

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

cameraPivot.transform.Rotate(-pitch, 0, 0, Space.Self);

我希望在X轴上有0到90的限制。

谢谢!

c# unity3d
1个回答
0
投票

请改用Quaternion。

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);
}

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.