Я создаю 2D-игру сверху вниз, на данный момент я застрял на анимации.У моего персонажа есть анимация перезарядки пистолета и бега , я создал 3-ю анимацию " перезагрузки во время бега ", так как я не мог смешать их обоих хорошо.Это довольно сложно с моей точки зрения сверху вниз, потому что если персонаж перемещается, он использует те же части тела, что и при перезагрузке анимации.Моя идея состояла в том, чтобы просто установить переходы в конфигурации, которая позволила бы мне достичь этого эффекта.В настоящий момент, если мой персонаж находится в состоянии работает и игрок начинает перезагружать оружие , он переходит в состояние "reload-while-running" , то же самое с reloading (игрок начинает бегать, перезаряжая оружие, он переходит в состояние перезагрузки во время работы).
У меня вопрос, могу ли я перейти в состояние reload-while-running со смещением времени, прошедшего в предыдущем состоянии?Например: персонаж начинает перезагружаться, через половину времени перезагрузки (скажем, через 2 секунды) он начинает двигаться, поэтому должен быть переход из состояния «перезагрузка» в состояние «перезагрузка во время работы».Я хочу начать новое состояние со смещением в 2 секунды.
Я пытался добиться этого с помощью кода в скрипте, устанавливая смещение перехода текущего состояния с помощью времени, нормализованного по времени текущего состояния, но это, похоже, не работает.
AnimatorClipInfo animatorStateInfo;
AnimatorStateMachine stateMachine;
ChildAnimatorStateMachine[] childAnimatorStateMachines;
AnimatorState reload;
//AWAKE METHOD
animatorController = animator.runtimeAnimatorController as AnimatorController;
stateMachine = animatorController.layers[0].stateMachine;
childAnimatorStateMachines = stateMachine.stateMachines;
//UPDATE
animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
foreach (ChildAnimatorState childAnimatorState in stateMachine.states)
{
if (childAnimatorState.state.name.Equals("SpaceCommando-Reload"))
{
reload = childAnimatorState.state;
reloadingTransitions = reload.transitions;
reloadingTransitions[0].offset = animatorStateInfo.normalizedTime;
}
}