private void StartAnimation(AnimEntryConfig p_newAnim) { if (p_newAnim.FadeMode == FadeModeType.CrossFade) { animation.CrossFade(p_newAnim.Clip.name, p_newAnim.fadeInTime); } else { animation.Play(p_newAnim.Clip.name, PlayMode.StopAll); } }
private void Update() { Animation animation = this.animation; if (baseName == null) { baseName = BaseAnim.Clip.name; } if (animation.isPlaying) { if (animation.IsPlaying(baseName)) { m_randAnimTimer -= Time.deltaTime; if (m_randAnimTimer < 0f) { m_randAnimTimer = GetNewAnimTimer(); m_currentAnim = GetRandomAnimation(); StartAnimation((m_currentAnim != -1) ? CurrentAnim : BaseAnim); } } else { if (lastConfig != CurrentAnim) { lastConfig = CurrentAnim; lastState = animation[lastConfig.Clip.name]; } if (BaseAnim.FadeMode == FadeModeType.CrossFade) { if (lastState.time > lastState.length - CurrentAnim.fadeOutTime) { animation.CrossFade(baseName, BaseAnim.fadeInTime); } } else if (lastState.time + Time.deltaTime > lastState.length) { animation.Play(baseName, PlayMode.StopAll); } } } else { animation.Play(baseName); } }