private IEnumerator TurnOffAnimation(Transform t, AnimationPlay play) { var animator = t.GetComponent <Animator>(); while (!animator.GetCurrentAnimatorStateInfo(0).IsName("End")) { yield return(new WaitForSeconds(1.3f)); } if (UI.EntryMode.GetAssembleModel() == AssembleModel.StudyModel) { Manager.AssembleManager.Instance.Recovery(); } t.gameObject.SetActive(false); play.SetIsDone(); }
/// <summary> /// This function will invoke a animation to play in the specific position and rotation /// </summary> /// <param name="name">The name of the animation, which is the name of the gameObject of the child of AnimationCollection</param> /// <param name="target">The position and rotation where the animation will happen</param> public AnimationPlay PlayAnimation(string name, Transform target) { var play = new AnimationPlay(); Transform animationTransform; if (animationList.TryGetValue(name, out animationTransform)) { animationTransform.position = target.position; animationTransform.rotation = target.rotation; animationTransform.gameObject.SetActive(true); StartCoroutine(TurnOffAnimation(animationTransform, play)); } else { Debug.Log("Not about to find the animation of name " + name); play.SetIsDone(); } return(play); }