Создание контроллера от первого лица (First-Person , FPS) в Unity включает в себя несколько ключевых компонентов: управление камерой, перемещение игрока,. Ниже приведён пример базового контроллера для FPS.
Этот контроллер будет включать:
- Управление камерой с помощью мыши.
- Перемещение игрока с помощью клавиш WASD.
1. Создание сцены
- Создайте новую сцену в Unity.
- Создайте пустой объект (Empty GameObject) и назовите его Player.
- Добавьте компонент Camera в качестве дочернего объекта к Player и назовите его MainCamera.
- Убедитесь, что MainCamera находится на уровне глаз игрока (например, на высоте 1,5 единицы по оси Y).
2. Основной скрипт контроллера
Создайте новый скрипт FPSController.cs и добавьте его к игроку (Player).
using UnityEngine;
public class FPSController : MonoBehaviour
{
public float speed = 6.0f; // Скорость передвижения
public float turnSpeed = 2.0f; // Скорость поворота
private CharacterController characterController;
private Camera playerCamera;
private float cameraPitch = 0f;
void Start()
{
characterController = GetComponent<CharacterController>();
playerCamera = Camera.main;
}
void Update()
{
// Поворот
float turn = Input.GetAxis("Mouse X") * turnSpeed;
transform.Rotate(0, turn, 0);
// Наклон камеры
float camTurn = Input.GetAxis("Mouse Y") * turnSpeed;
cameraPitch -= camTurn;
cameraPitch = Mathf.Clamp(cameraPitch, -89f, 89f); // Ограничение наклона камеры
playerCamera.transform.localEulerAngles = new Vector3(cameraPitch, 0, 0);
// Перемещение
float moveHorizontal = Input.GetAxis("Horizontal") * speed;
float moveVertical = Input.GetAxis("Vertical") * speed;
Vector3 moveDirection = new Vector3(moveHorizontal, 0, moveVertical);
moveDirection = transform.rotation * moveDirection;
characterController.Move(moveDirection * Time.deltaTime);
}
}
3. Настройка компонентов
- Добавьте компонент CharacterController к объекту Player.
- Убедитесь, что камера (MainCamera) является дочерним объектом Player и расположена на уровне глаз.
- Установите размер CharacterController так, чтобы он соответствовал размеру вашего игрока.
4. Управление
По умолчанию скрипт использует стандартные оси ввода Unity:
- WASD или стрелки для перемещения.
5. Тестирование
Запустите сцену, и вы увидите, как ваш игрок перемещается и взаимодействует с окружающей средой.
Этот скрипт представляет собой базовый шаблон. Вы можете расширить его, добавив звуки, эффекты, взаимодействие с объектами и многое другое.