Как сделать поворот камеры, не ограниченный местом для передвижения курсора?

В Unity, для реализации поворота камеры без ограничений для передвижения курсора, мы можем использовать скрипт MouseLook. Этот скрипт будет реагировать на движение мыши, чтобы поворачивать камеру вокруг объекта.

Прежде всего, нам потребуется создать пустой объект, чтобы служить центром вращения камеры. Мы можем назвать его, например, "CameraPivot". Затем мы создаем основной скрипт, назовем его "CameraController", и прикрепляем его к объекту камеры.

Вот пример реализации скрипта CameraController:

using UnityEngine;

public class CameraController : MonoBehaviour
{
    public Transform cameraPivot;
    public float sensitivity = 5.0f; // чувствительность мыши

    private float rotationX = 0.0f;

    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * sensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * sensitivity;

        // Поворот камеры вокруг оси Y (горизонтальное вращение влево/вправо)
        // Здесь мы вращаем весь объект CameraPivot, чтобы сохранить камеру вокруг него
        cameraPivot.Rotate(0, mouseX, 0);

        // Поворот камеры вокруг оси X (вертикальное вращение вверх/вниз)
        rotationX -= mouseY;
        rotationX = Mathf.Clamp(rotationX, -90f, 90f); // ограничиваем угол поворота от -90 до 90 градусов

        // Получаем текущую эйлерову угловую позицию камеры и изменяем только ось X
        Vector3 cameraRotation = transform.localEulerAngles;
        cameraRotation.x = rotationX;
        
        // Применяем новую позицию
        transform.localEulerAngles = cameraRotation;
    }
}

В этом скрипте мы используем функцию Input.GetAxis("Mouse X") и Input.GetAxis("Mouse Y"), чтобы получить значения смещения мыши по осям X и Y. Затем мы используем это смещение для поворота нашего объекта CameraPivot.

Важно также отметить, что мы использовали функцию Mathf.Clamp, чтобы ограничить угол поворота оси X камеры от -90 до 90 градусов. Это делает камеру невозможной для переворачивания.

Наконец, мы обновляем позицию камеры, сначала получаем текущую эйлерову угловую позицию камеры, а затем изменяем только ось X, применяя новую позицию.

После того, как вы создадите этот скрипт и прикрепите его к объекту камеры, вы должны назначить объект CameraPivot в переменную cameraPivot в инспекторе Unity. Это позволит скрипту знать, вокруг чего вращать камеру.