using System.Collections; using System.Collections.Generic; using UnityEngine; // 单独的一个招式 public class AttackAbility : AbilityBase { Animator m_Animator; int m_AnimHash; /// /// 在跑动状态时可以切换的ability /// private List m_Triggers = new List(); /// /// 从动画结束开始计时 /// float m_TimeCount; public float ExpireTime { get { return m_TimeCount; } } public AttackAbility(Animator animator, int animation) { m_Animator = animator; m_AnimHash = animation; } public override void OnInit() { } public override void OnDefend() { throw new System.NotImplementedException(); } public override void OnEnter() { m_TimeCount = 0; m_Animator.CrossFadeInFixedTime(m_AnimHash, 0.25f); } public override void OnExit() { m_TimeCount = 0; } public override void OnHit() { } public override void OnHurt() { } public override void OnTranslate(AbilityBase to) { } public override void OnUpdate() { AnimatorStateInfo info = m_Animator.GetCurrentAnimatorStateInfo(0); if(info.shortNameHash == m_AnimHash && info.normalizedTime >= 0.99f) { m_TimeCount += Time.deltaTime; } foreach (var abilityTrigger in m_Triggers) { if (abilityTrigger.Update()) break; } } public void AddTrigger(Trigger trigger) { if (trigger == null || m_Triggers.Contains(trigger)) return; m_Triggers.Add(trigger); } }