Это вторая часть серии о процедурной анимации передвижения персонажа. В первой части автор настроил базовое движение корня и бёдер. Сейчас фокус смещается на сами шаги и организацию кода для ног.
Рефакторинг логики ног
Чтобы не дублировать код для левой и правой ноги, автор выносит их логику в вспомогательную структуру FootController с методами Init и Update:
struct FootController { void Init( ALocoPawn& Pawn ); void Update( ALocoPawn& Pawn, float DeltaTime ); }Каждая нога управляется своим экземпляром FootController. Это упрощает поддержку и развитие системы: изменения в логике шага делаются один раз и автоматически применяются к обеим ногам.
Плавность шага и параметры
Автор добивается плавного движения ног по дуге («step arcs»), визуально напоминающего естественную ходьбу. Для управления характером шага можно ввести параметр, условно названный stompiness, который интерполирует между разными формами дуги шага (например, мягкий шаг vs. «топот»). Это даёт дизайнерам простой рычаг для настройки стиля ходьбы без изменения базового кода.
Ограничения текущей модели
Чтобы анимация выглядела естественно, автору пришлось существенно снизить скорость перемещения корня — более чем вдвое. При прежней «спринтерской» скорости частота шагов становилась неестественно высокой и напоминала комический бег из скетчей Benny Hill.
Причина в том, что текущая ментальная модель и реализованная логика описывают ходьбу, но не бег. Для спринта потребуется другая кинематика и иные зависимости между скоростью, длиной шага и частотой шагов.
Планы на продолжение
В следующей части серии автор планирует пересмотреть ментальную модель движения и внести изменения на всех уровнях системы, чтобы корректно поддержать спринт. Также доступен полный пример кода для второй части, демонстрирующий текущую реализацию.
Выводы
- Логику ног целесообразно выносить во вспомогательные структуры (например, FootController), чтобы избежать дублирования кода.
- Параметризация шага (например, через «stompiness») позволяет гибко настраивать стиль ходьбы без переписывания системы.
- Текущая модель корректно описывает только ходьбу: при высоких скоростях шаги выглядят неестественно.
- Для реалистичного спринта нужна отдельная ментальная модель и доработки на всех слоях системы процедурной анимации.