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<GuardModel>(); } }
|
|
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;
|
}
|
}
|
}
|