Как я могу проверить, закончилась ли анимация в Unity, а затем выполнить действие? [C#] Я не использую аниматор.Проверьте, закончилась ли анимация?
ответ
От: http://answers.unity3d.com/questions/52005/destroy-game-object-after-animation.html
Чтобы выполнить действие из редактора анимации ...
-Создание скрипт с простой общественной функции, которая уничтожит объект. например
public class Destroyable : MonoBehaviour
{
public void DestroyMe()
{
Destroy(gameObject);
}
}
-Добавить этот сценарий к анимированному объекту, который вы хотите уничтожить.
-В редакторе анимации переместите анимационный скруббер в конец анимации.
-Использование «Добавить событие» кнопку на панели инструментов анимации
-Выберите «DestroyMe» из функции раскрывающегося списка в диалоговом окне Edit Анимация событий.
-Нижна ваша анимация должна воспроизводиться, запускать функцию «УдалитьMe» и уничтожать объект/выполнять ваши действия.
Я использовал этот метод несколько раз, пригождается для определенных вещей в анимации :)
Вы должны проверить значение Animation.IsPlaying.
Из документов:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public Animation anim;
void Start() {
anim = GetComponent<Animation>();
}
void OnMouseEnter() {
if (!anim.IsPlaying("mouseOverEffect"))
anim.Play("mouseOverEffect");
}
}
@ user5497945 Можете ли вы объяснить, почему? Это кажется разумным ответом, если вы не можете использовать его по какой-либо веской причине, отредактируйте свой вопрос и добавьте, почему. –
Так же, как сказал Андреа в своем сообщении: Animation-IsPlaying довольно много, что вам нужно, так как вы не используете Animator , Проверьте Animation, чтобы увидеть другие сладкие вещи, которые вы можете использовать.
using UnityEngine;
using UnityEngine.Collections;
public class ExampleClass : MonoBehaviour
{
Animation anim;
void Start()
{
anim = GetComponent<Animation>();
}
//In update or in another method you might want to check
if(!anim.isPlaying("StringWithAnimationClip") //or anim.clip.name
//Do Something
}
Вы также можете принудительно остановить анимацию с помощью anim.Stop();
Теперь вы прокомментировали, что вы не хотите использовать isPlaying(), поэтому, если вы можете продумать, я отредактирую свой пост.
Не знаете, как ваше добавление «Я не использую аниматор» аннулирует ответ Андреа, поскольку 'IsPlaying' является свойством' Animation', а не 'Animator' ...? – Serlite