Я знаю способ сделать то, что вы хотите, более простым способом.Ищите https://docs.unity3d.com/Manual/class-State.html
Вы получите те же результаты, но по-другому, используя состояния анимации.
Затем перейдитев окно аниматора
И вы можете построить что-то подобное.Это переходы между состояниями, связанные с анимацией.
Взгляните на это тоже https://docs.unity3d.com/Manual/class-Transition.html
Так что в вашемСценарий, к которому вы можете получить доступ к Аниматору с помощью:
Animator MyAnimator = GetComponent<Animator>();
И где-нибудь, в зависимости от ваших условий в игре, вы можете сделать это:
MyAnimator.Play("Attack");
Если эта анимация не имеетпереход, это будет ваше решение сделать это анимацией цикла (она будет повторяться, когда закончится), или она останется в позиции последнего кадра анимации.
При некоторых условиях, которые вы можете захотеть иметь, напримертот, что в вашем вопросе, вы могли бы сделать что-то вроде этого.
if (Vector3.Distance(this.transform.position, myTarget.transform.position) >= 2f) {
MyAnimator.Play("Idle");
}
Предупреждение: этот Vector3.Distance не может быть лучшим и быстрым способом сделать это, это просто в качестве примера.Не забывайте всегда стараться оптимизировать свой код в соответствии с требованиями вашего проекта.