Как сделать слежение камеры одновременно за игроком и за курсором как в top down шутерах?

Создание слежения камеры за игроком и за курсором в Unity для создания эффекта top-down шутера возможно с использованием скрипта и ряда компонентов.

Первым шагом является создание пустого объекта, который будет представлять камеру в игре. Затем, на пустом объекте создайте компонент "Camera" (компонент, отвечающий за проверку размера экрана и установку положения камеры) и установите его следующим образом:

1. Убедитесь, что компонент "Camera" имеет параметр "Viewport Rect" установленным на (0, 0, 1, 1). Это гарантирует, что камера занимает весь экран.
2. Включите параметр "Clear Flags" и установите его на "Solid Color". Это позволит камере отображать только объекты, но не фоновые изображения.
3. Убедитесь, что "Stereoscopic 3D" отключен.
4. Другие параметры камеры, такие как "Field of View" или "Culling Mask", можно настроить по вашему усмотрению.

Теперь, создайте новый скрипт и прикрепите его к объекту камеры. В этом скрипте мы будем осуществлять слежение камеры за игроком и за курсором. Вот пример реализации:

using UnityEngine;

public class CameraController : MonoBehaviour
{
    public Transform player; // ссылка на трансформ игрока

    private Vector3 offset; // смещение камеры относительно игрока

    private void Start()
    {
        offset = transform.position - player.position; // вычисляем смещение
    }

    private void Update()
    {
        Vector3 targetPosition = player.position + offset; // вычисляем новую позицию камеры

        // следуем за игроком, игнорируя изменение высоты камеры
        targetPosition.y = transform.position.y;

        transform.position = targetPosition; // применяем новую позицию камеры
    }
}

После создания скрипта, прикрепите его к объекту камеры, и в инспекторе укажите ссылку на трансформ игрока. Теперь камера будет следовать за игроком по горизонтали и вертикали, сохраняя фиксированное смещение.

Однако, это только начало. Чтобы камера слежения также отслеживала положение курсора, добавьте следующие строки кода в метод Update() вашего скрипта:

    private void Update()
    {
        // ...

        // следование камеры за курсором
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        mousePosition.y = player.position.y; // фиксируем высоту игрока
        transform.LookAt(mousePosition);
    }

В этом коде мы используем метод ScreenToWorldPoint() для преобразования позиции курсора на экране в мировые координаты. Затем мы присваиваем полученные координаты по оси y координате игрока, чтобы камера слежения не меняла высоту. Наконец, мы используем метод LookAt() камеры, чтобы направить ее в сторону позиции курсора.

Теперь при запуске игры камера будет следить за игроком и одновременно смотреть в сторону позиции курсора, создавая эффект top-down шутера.

Удостоверьтесь, что ваш игрок имеет движение с помощью скрипта или компонента, чтобы тестировать работу камеры.