#c# #unity3d
#c# #unity3d
Вопрос:
У меня есть список клипов от одного аниматора. Как мне воспроизводить каждый из этих клипов один за другим так, чтобы, когда первый заканчивается, начинался второй и так далее..
public Animator anim;
// Start is called before the first frame update
void Start()
{
StartCoroutine(PlayAllAnimations());
}
// Update is called once per frame
void Update()
{
}
IEnumerator PlayAllAnimations()
{
anim.Play("Anim_1", 0, 0.25f);
yield return new WaitForSeconds(2);
anim.Play("Anim_2", 0, 0.25f);
yield return new WaitForSeconds(2);
anim.Play("Anim_3", 0, 0.25f);
}
Ответ №1:
Вы должны использовать Animator
для этого, потому что это действительно полезно и просто в использовании. Например: в этом случае я поместил 3 анимации в аниматор и выбрал одну в качестве состояния ожидания, а затем добавил переходы в нужном порядке без условия. Оставление перехода без условия означает, что анимации будут напрямую переходить к другой анимации на основе Has exit time
. Вы также можете снять loop
флажок с анимации, чтобы она воспроизводилась только один раз, и сразу перейти к другой анимации. Таким образом, вы можете создавать простые циклы между анимациями или все, что вам больше нравится, с условиями и параметрами! Я предлагаю также установить transition duration
значение равным нулю, если вы хотите немедленного переключения между анимациями, но это зависит от ваших тестов!
Если вы предпочитаете работать со сценарием, другой способ сделать это — работать с событием анимации, и с его помощью вы можете добавлять события через скрипт без каких-либо проблем.
Для более сложных серий анимаций вы можете использовать Timeline, систему Unity, которая позволяет работать со многими анимациями на временной шкале более кинематографично.
Комментарии:
1. Другой способ сделать это программно — AnimationEvent . Возможно, включите это.
2. Вы также можете использовать временные рамки: docs.unity3d.com/Packages/com.unity.timeline@1.2/manual /…