Перемещение ботов и персонажа.

Начинающий
Статус
Оффлайн
Регистрация
15 Окт 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Извините если такая тема уже была (поиском не нашёл, или неправильно искал). Проблема в следующем, если использовать перемещение с помощью MoveToLocation, или SimpleMoveToLocation, то любой персонаж перемещаются непрерывно, конечно с заданным ускорением и т.д. И если анимация перемещения не имеет пауз то всё в принципе нормально, можно подогнать анимацию и скорость перемещения так что-бы выглядело естественно.
Однако если у персонажа имеется паузы в движении (сделал шаг, остановился, потом снова шаг), например зомби там, или еще какой "нестандартный" шаг, тогда во время паузы перемещения в анимации персонаж продолжает перемещаться проскальзывая по поверхности. Каким образом можно делать паузы в перемещении, или как вообще согласовать анимацию и перемещение? Писать свой контроллер движения? Но в этом случае придётся уже самому рассчитывать траекторию движения и прочее, может есть более простой способ использовать то что есть уже в самом UE?.
 
Последнее редактирование:
Горила Макака
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2020
Сообщения
140
Реакции[?]
21
Поинты[?]
1K
Создай блендспейс раставь анимации и скорости передвижения, поставь максимальную скорость подходяющую под анимации в character movement закинь все это в state machine и все!
 
Начинающий
Статус
Оффлайн
Регистрация
15 Окт 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Нет это не то, так конечно-же я делал, персонаж передвигается непрерывно, а не шагами как должен. Если шаги одинаковы, то это не так заметно, но попробуйте посмотреть чуть отдалившись в профиль на шаг такого персонажа - он "проскальзывает" по поверхности (как будто летит как призрак), просто передвигая при этом ногами в "воздухе". Проблема не в машине состояний и/или переключении анимаций между собой, а именно в соответствии анимации и самого передвижения. В таких примерах, как на видео, это две невзаимосвязанные сущности, подгоняемые друг под друга вручную. Выглядит крайне неестественно и убого, для лучшего примера возьмите анимацию шагающего зомби (из того-же mixamo -
Пожалуйста, авторизуйтесь для просмотра ссылки.
) и подставьте в такую логику.
 
Последнее редактирование:
Горила Макака
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2020
Сообщения
140
Реакции[?]
21
Поинты[?]
1K
Нет это не то, так конечно-же я делал, персонаж передвигается непрерывно, а не шагами как должен. Если шаги одинаковы, то это не так заметно, но попробуйте посмотреть чуть отдалившись в профиль на шаг такого персонажа - он "проскальзывает" по поверхности (как будто летит как призрак), просто передвигая при этом ногами в "воздухе". Проблема не в машине состояний и/или переключении анимаций между собой, а именно в соответствии анимации и самого передвижения. В таких примерах, как на видео, это две невзаимосвязанные сущности, подгоняемые друг под друга вручную. Выглядит крайне неестественно и убого, для лучшего примера возьмите анимацию шагающего зомби (из того-же mixamo -
Пожалуйста, авторизуйтесь для просмотра ссылки.
) и подставьте в такую логику.
Скорость настройте
 
Начинающий
Статус
Оффлайн
Регистрация
15 Окт 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Так в том то и дело что скорость перемещения у анимации переменная - сделал шаг и приостановился, затем повтор. Как в этом случае настроить переменную скорость перемещения через стандартные инструменты SimpleMoveToLocation, или MoveToLocation? Если это возможно конечно.
У меня только предположение сделать события на шаги в анимации (как для звука шагов) и в дальнейшем отслеживая эти события менять скорость перемещения. Но попытки это сделать не привели к требуемому результату, так как получается замкнутый круг - скорость влияет на анимацию, а анимация влияет на скорость. Естественно это нормально не работает.
Или всё-же необходимо делать свою логику перемещения и стандартный инструментарий тут не поможет?
 
Последнее редактирование:
Горила Макака
Начинающий
Статус
Оффлайн
Регистрация
17 Ноя 2020
Сообщения
140
Реакции[?]
21
Поинты[?]
1K
Так в том то и дело что скорость перемещения у анимации переменная - сделал шаг и приостановился, затем повтор. Как в этом случае настроить переменную скорость перемещения через стандартные инструменты SimpleMoveToLocation, или MoveToLocation? Если это возможно конечно.
У меня только предположение сделать события на шаги в анимации (как для звука шагов) и в дальнейшем отслеживая эти события менять скорость перемещения. Но попытки это сделать не привели к требуемому результату, так как получается замкнутый круг - скорость влияет на анимацию, а анимация влияет на скорость. Естественно это нормально не работает.
Или всё-же необходимо делать свою логику перемещения и стандартный инструментарий тут не поможет?
Видео реализации скинь
 
Начинающий
Статус
Оффлайн
Регистрация
15 Окт 2021
Сообщения
13
Реакции[?]
0
Поинты[?]
0
Вот исходная анимация, как должен перемещаться персонаж (зацикленная анимация для примера).

А это как он перемещается в UE используя SimpleMoveToLocation (включен RootMotion), то что персонаж немного над полом шагает не суть важно, не в этом проблема совсем.
 
Сверху Снизу