Как ограничить transform.Rotate (float, 0,0)? - PullRequest
0 голосов
/ 17 февраля 2019

Я знаю, что в Google есть некоторые ответы, но я не могу ограничить ротацию с помощью кода:

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

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

Я хочу иметь ограничения от 0 до 90 по оси X .

Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2019

Вместо этого используйте 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...