using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using Snxxz.UI; public class GuardDance_2 : SMB_Base { private SFXController _sfXctl; GuardModel model { get { return ModelCenter.Instance.GetModel(); } } protected override void OnEnter(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnEnter(owner, animator, stateInfo, layerIndex); GA_Guard guard = owner as GA_Guard; if (guard == null) { return; } guard.stopDanceState = false; if (_sfXctl == null) { var mountPoint = guard.Root.GetChildTransformDeeply(GAStaticDefine.MountPointBoneName); _sfXctl = SFXPlayUtility.Instance.PlayBattleEffect(guard.pickEffectIds[1], owner); if (_sfXctl != null) { _sfXctl.duration = 0; _sfXctl.transform.SetParent(mountPoint); _sfXctl.transform.localPosition = Vector3.zero; } } else { _sfXctl.SetActive(true); } } protected override void OnExit(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnExit(owner, animator, stateInfo, layerIndex); GA_Guard guard = owner as GA_Guard; if (guard == null) { return; } animator.speed = guard.animatorSpeed; guard.stopDanceState = false; ReleaseSFX(); } protected override void OnUpdate(GActor owner, Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnUpdate(owner, animator, stateInfo, layerIndex); GA_Guard guard = owner as GA_Guard; if (guard == null) { return; } if (guard.stopDanceState) { animator.speed = model.stopAnimationSpeed; } if (stateInfo.normalizedTime >= 0.96f && !animator.IsInTransition(0)) { owner.Idle(); } } void ReleaseSFX() { if (_sfXctl != null) { SFXPlayUtility.Instance.Release(_sfXctl); _sfXctl = null; } } }