Начинающие разработчики игр, в первые моменты после установки игрового движка Unity задаются вопросом? Как реализовать управление персонажем в 2D пространстве Юнити.
Как не странно, это первое что приходит в голову молодому разработчику, а именно заставить персонажа двигаться. Сейчас я расскажу как сделать контроллер для управления игроком с помощью клавиш ПК.
Как сделать управление персонажем в Unity 2D
1. Первым делом, на игровой сцене создадим персонажа, в моем примере это будет обычный квадрат.
2. На игровой объект, вешаем компонент RigidBody 2D у которого есть свойство velocity. Для этого выбираем наш игровой объект на сцене и в инспекторе жмем кнопку “AddComponent”. Вбиваем название компонента RigidBody 2D как на изображении и выбираем его.
Можно использовать и AddForce но, velocity будет более понятен новичкам.
3. Далее, чтобы объект не падал в пространстве, в поле Body Type выбираем Kinematic. Если же вам надо чтобы игрок имел физические свойства, оставляем Dynamic.
4. Создаем новый скрипт, и называем его Controller, можно как угодно назвать, главное чтобы было понятно вам. Для этого в блоке Assets жмем правой клавишей мыши, выбираем “Create/C# Script”.
5. Только что созданный скрипт, перетаскиваем на нашего игрока. Скрипт будет отображаться в инспекторе в виде компонента. Далее, открываем файл Controller двойным кликом по нему. Должен открыться редактор Visual Studio.
6. В файле создадим 4 поля vertical и horizontal, speed, а так-же ранее добавленный в Инспектор компонент RigidBody 2D. В методе Start получаем компонент для дальнейшей работы с ним.
private float vertical; //Движение по вертикали private void Start() |
7. В методе Update, будем отслеживать нажатия клавиш и записывать значения в поля vertical и horizontal. Для этого есть метод Input.GetAxis(«») который, отслеживает событие нажатия клавиш A, W, D, S и клавиши со стрелками на клавиатуре. Умножим все на заданную скорость, полем speed.
horizontal = Input.GetAxis(«Horizontal») * speed; vertical = Input.GetAxis(«Vertical») * speed; |
Чтобы персонаж двигался с одинаковой скоростью на всех устройствах, лучше все это реализовать не в Update методе, а в FixedUpdate.
8. Осталось, присвоить значения полей vertical и horizontal, компоненту RigidBody 2D. Сохраняем файл.
rb.velocity = new Vector2(horizontal, vertical); |
9. Открываем Unity и запускаем проект. Чтобы изменить скорость, меняем значение в поле speed через инспектор. Все наш персонаж движется.
Заключение
Как видите, заставить двигаться персонажа, можно за пару минут с помощью пару строк кода. Есть много способов реализации контроллера но, я рассказал о самом простом, который будет понятен каждому новичку.