Вы не предоставили достаточно информации об окружающей среде, планируемом игровом дизайне и вашей текущей структуре движка, чтобы предложить что-то конкретное, поэтому вот общий совет:
Не существует единственного оптимального решения.Возьмите что-нибудь нарисованное и затем используйте это, пока оно не начнет ломаться, затем итерируйте;это очень связанная с игровым дизайном проблема, и игровой дизайн основан на итерации, поэтому доведение итерации до уровня движка (вместо того, чтобы раздражаться и пытаться придумать «идеальное решение» вне ворот) оказываетсялучший способ изучить этот аспект игрового процесса.Некоторые примеры того, насколько сильно может варьироваться ваше решение:
Если у вас есть анимация, основанная только на циклическом прохождении кадров, когда «сущность игрока» находится в каком-то состоянии (например, ходьба, прыжок, ожидание), тогда вы продолжаетесчетчик кадров, увеличьте его с помощью временного шага игры и нарисуйте кадры в соответствии со счетчиком.
Если у вас есть анимация, для отображения которой требуется много контекстной информации, например поворот в разные стороны, захватуступы и т. д., затем вы добавляете дополнительные проверки состояния вместе со счетчиком кадров, и, если имеется достаточно форм состояния, вы можете захотеть формализовать его как конечный автомат, запускающий каждый кадр.Вы также можете иметь некоторый процедурный эффект, связанный с состоянием объекта: вращение, мигание, масштабирование, шейдеры ...
Если анимация вызывает события игрового процесса (например, бросание удара), вам придется решить, ставить лиэту информацию непосредственно в коде анимации или для введения механизма, управляемого данными, для «запуска этого события сейчас, порождения этого объекта, включения этого объема столкновения ...»
Затем есть детали, такие как исходные точки, изображениеразмер (размер может меняться со временем для некоторых анимаций), переменная скорость воспроизведения ....
Как я уже говорил, не пытайтесь найти идеальное решение.Это зависит только от того, что нужно игре.