Выбор анимации смерти
Логика выбора анимаций смерти для юнита типа human хранится в файле \properties\animation_selector\
human_death.inc
Селектор обрабатывает запросы, имена которых соответствуют обстоятельствам смерти.
Варианты запросов для выбора анимаций смерти:
stand_dying
- смерть стоя;squat_dying
- смерть сидя;lie_dying
- смерть лежа;swim_dying
- смерть во время плавания;corpse_drop
иcorpse_drag
- падение и протаскивание трупа во время смерти;default_dying
- специальный запрос, который делается 1 раз и запоминает, что вернулось. По этому запросу должна быть анимация смерти, которая будет проигрываться, если ничего другого не нашлось. Она нужна, чтобы не было мертвых стоящих солдат после загрузки.
Выбор анимаций смерти
После выбора запроса на анимацию (перечислены выше) в условных конструкциях блока if
проверяются разные варианты обстоятельств смерти.
Варианты проверок:
флаги обстоятельства смерти -
human_kill_flags
;тип территории -
terrain_pp
;проверка на предметы экипировки во время смерти -
human_stuff
.
Одной из проверок по флагам обстоятельств смерти является проверка направления: front
или back
.
Если проигрыванию анимации мешает препятствие, то дальше выбор анимации идёт по списку:
Берется правильное направление, которое указано в значении параметра
human_kill_flags
.Флаги направления (
front
иback
) меняются местами.Используется вариант без флагов направления - предполагается, что в этом варианте выберется анимация, где солдат падает на месте и влетит в препятствие.
Основным способом указания анимации является случайный выбор анимации смерти по ее весу из указанного списка анимаций.
Поведение объекта human после смерти
После смерти движок располагает труп по поверхности.
Чтобы после завершения анимации смерти положение тела юнита сохранялось без изменений (например, при смерти в окопе), в настройках анимации используется свойство
{props "dont_update_placement_after_death"}
.
Его можно указать в файле properties\animation\human\human_anm.ext
или в любом списке настроек анимаций.
Last updated