- Home /
Having alot of trouble with 2d animations
So I've never used the animator component before and its proving tricky for me. What I want to do is just destroy an object when its animation finishes. Problem is that getting the state to transition. Its a simple popup that plays once and it destroyed so its set up as.
Animation->finish playing
in the animator graphical editor. then in C# im trying to do. public class comboPopupController : MonoBehaviour { public Animator a; // Use this for initialization void Start () { a=GetComponent(); }
// Update is called once per frame
void Update ()
{
Debug.Log("Checking if animation playing");
if(a.GetCurrentAnimatorStateInfo(0).nameHash==Animator.StringToHash("FinishedPlaying"))
{
Debug.Log("Combo animation stopped, deleting prefab");
Destroy(this.gameObject);
Debug.Log("Prefab Deleted");
}
}
}
theres only one condition in my transition.
(exit time: 0.75) which is the default im not really sure what it does, and the documentation is just confusing me. Any Help would be appreciated. thanks!
I changed my script to:
AnimatorStateInfo an = a.GetCurrentAnimatorStateInfo(0);
float time=an.normalizedTime;
Debug.Log (an.normalizedTime);
if(time>=1.0f)
{
Debug.Log("Combo animation stopped, deleting prefab");
Destroy(gameObject);
Debug.Log("Prefab Deleted");
}
And in the debug log it counts up to 1, then it says
UnityEngine.Debug:Log(Object) comboPopupController:Update() (at Assets/Scripts/comboPopupController.cs:18) but im not sure what NaN means >< and the destroy method never gets called, nor do my Debug logs within the if statmentNaN
Answer by Long Fall Games · Jan 05, 2014 at 03:11 AM
I think i got it sorted using the CurrentAnimatorState's Normalized time value