Создание слежения камеры за игроком и за курсором в Unity для создания эффекта top-down шутера возможно с использованием скрипта и ряда компонентов.
Первым шагом является создание пустого объекта, который будет представлять камеру в игре. Затем, на пустом объекте создайте компонент "Camera" (компонент, отвечающий за проверку размера экрана и установку положения камеры) и установите его следующим образом:
- Убедитесь, что компонент "Camera" имеет параметр "Viewport Rect" установленным на (0, 0, 1, 1). Это гарантирует, что камера занимает весь экран.
- Включите параметр "Clear Flags" и установите его на "Solid Color". Это позволит камере отображать только объекты, но не фоновые изображения.
- Убедитесь, что "Stereoscopic 3D" отключен.
- Другие параметры камеры, такие как "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 шутера.
Удостоверьтесь, что ваш игрок имеет движение с помощью скрипта или компонента, чтобы тестировать работу камеры.