2015-11-04 6 views
0

Как я могу проверить, закончилась ли анимация в Unity, а затем выполнить действие? [C#] Я не использую аниматор.Проверьте, закончилась ли анимация?

+0

Не знаете, как ваше добавление «Я не использую аниматор» аннулирует ответ Андреа, поскольку 'IsPlaying' является свойством' Animation', а не 'Animator' ...? – Serlite

ответ

3

От: http://answers.unity3d.com/questions/52005/destroy-game-object-after-animation.html

Чтобы выполнить действие из редактора анимации ...

-Создание скрипт с простой общественной функции, которая уничтожит объект. например

public class Destroyable : MonoBehaviour 
{ 
    public void DestroyMe() 
    { 
     Destroy(gameObject); 
    } 
} 

-Добавить этот сценарий к анимированному объекту, который вы хотите уничтожить.

-В редакторе анимации переместите анимационный скруббер в конец анимации.

-Использование «Добавить событие» кнопку на панели инструментов анимации

-Выберите «DestroyMe» из функции раскрывающегося списка в диалоговом окне Edit Анимация событий.

-Нижна ваша анимация должна воспроизводиться, запускать функцию «УдалитьMe» и уничтожать объект/выполнять ваши действия.

Я использовал этот метод несколько раз, пригождается для определенных вещей в анимации :)

1

Вы должны проверить значение 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"); 

    } 
} 
+2

@ user5497945 Можете ли вы объяснить, почему? Это кажется разумным ответом, если вы не можете использовать его по какой-либо веской причине, отредактируйте свой вопрос и добавьте, почему. –

0

Так же, как сказал Андреа в своем сообщении: 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(), поэтому, если вы можете продумать, я отредактирую свой пост.

 Смежные вопросы

  • Нет связанных вопросов^_^