Создание проекта на Unreal Engine 4

Часть 2

Создание переключения состояния между ходьбой и бегом

Перед началом работы нужно определиться с конечным результатом, чтобы хотелось получить. Для этого нужно поставить вопросы и ответить на них. Это поможет продвигаться целенаправленно и, если повезёт, избежать некоторых ошибок.

Вопрос 1. Что нужно сделать?

Возможность чтобы персонаж мог ходить, а не постоянно бегать.

Вопрос 2. Каким образом он будет ходить, если сейчас он может только бегать?

Использовать кнопку CapsLock как переключатель между бегом и ходьбой.

Теперь можно приступить к первым пробам. Идея такова, чтобы использовать стандартное перемещение из шаблона, предоставляемого UE4 и просто изменить скорость перемещение, чтобы игрок начал ходить. А дерево смешивания анимаций выполнить остальную работу.

Первый делом создал переменные, которые будут отвечать за скорость при ходьбе, за скорость при беге и булевую переменную для того чтобы понимать игрок сейчас идёт или бежит.

​Рис. 1 - Созданные переменные Somied Nagrom
​Рис. 1 - Созданные переменные Somied Nagrom

Для ходьбы я задал значение по умолчанию 125, а для бега 500. «IsWalk?» по умолчанию – false, что означает игрок со старта будет бегать, а не ходить. Далее создал функцию, в которой будет переключаться булевая переменная между true и false, после этого в переменную «MaxWalkSpeed», которая находится в компоненте «CharacterMovement» присваивается «WalkSpeed», если «IsWalk?» равен true, иначе присваивается «RunSpeed».

​Рис. 2 - Содержимое функции SwitchTypeMovement Somied Nagrom
​Рис. 2 - Содержимое функции SwitchTypeMovement Somied Nagrom

Далее, нужно вызвать событие нажатия CapsLock и если нажали на кнопку, то выполняем один раз вызов функции SwitchTypeMovement. Вызов один раз нужен, чтобы функция не вызывалась каждый кадр, когда игрок зажимает клавишу CapsLock. После отжатые клавиши соединяем узел с Reset, чтобы можно было вызывать функцию повторно.

<p>Рис. 3. Обработка события нажатия на CapsLock<span>​</span></p> Somied Nagrom

Рис. 3. Обработка события нажатия на CapsLock

Somied Nagrom

Перешёл в дерево смешивания анимаций: бездействия, ходьбы и бега. Экспериментальным способом настроил переходы. Горизонтальная ось – это скорость, поэтому поставил максимальную скорость 500 и когда скорость игрока будет приближаться к этому значению, игрок будет плавно переходить от ходьбы к бегу. Для ходьбы поставил значение 160.

<p>Рис. 4. Дерево смешиваний анимаций<span>​</span></p> Somied Nagrom

Рис. 4. Дерево смешиваний анимаций

Somied Nagrom

И результат на выходе получился тот который и планировался. При нажатии на CapsLock игрок с режима бега переходит в режим ходьбы. При повторном нажатии ходьба сменивается бегом:

Работа над ошибками

В прошлый раз:

я делал вызов случайных анимаций если игрок стоит на протяжении заданного переменной времени и при тестировании не заметил, что есть артефакт, когда игрок начинает перемещать персонажа. Это нужно обязательно исправить, чем и займусь.

Вопрос 1. В чем проблема?

Когда персонаж стоит и не двигается, а через некоторое время начинает движение, то во время бега происходит вызов и установка случайной анимации, что привод к не нужным артефактам. Наглядный пример:

Вопрос 2. Почему это происходит?

Как можно было заметить на видео, то есть переменная таймер, которая не сбрасывается при беге персонажа. Из-за этого по завершению отсчёта вызывается случайная анимация.

Вопрос 3. Как исправить?

Когда игрок начинает движение сбросить таймер.

<p>Рис. 5 - Сброс таймера, если игрок начал перемещение</p> Somied Nagrom

Рис. 5 - Сброс таймера, если игрок начал перемещение

Somied Nagrom

И получаем результат:

11
Начать дискуссию