using UnityEngine; public class EliteSoldierSkill : UnitSkill { [Header("蓄力重斩参数")] [Min(0f)] public float skillDamage = 125f; [Min(0.1f)] public float skillRadius = 2.5f; [Header("技能动画")] [Min(0f)] public float skillAnimationDuration = 2.22f; [Header("特效")] public GameObject groundCrackEffectPrefab; [Min(0f)] public float groundCrackForwardDistance = 1.2f; [Min(0f)] public float groundCrackHeightOffset = 0.05f; private bool isSkillReady; public override void ReleaseSkill() { if (unit == null) { return; } unit.FaceCurrentTarget(0f); isSkillReady = true; unit.PlaySkillAnimation(OnSkillFinished, skillAnimationDuration); } // 添加到蓄力重斩动画的命中帧。 public void OnSkillHit1() { if (!isSkillReady) { return; } if (groundCrackEffectPrefab != null) { Vector3 effectPosition = unit.transform.position + unit.transform.forward * groundCrackForwardDistance; effectPosition.y += groundCrackHeightOffset; GameObject effectObject = Instantiate( groundCrackEffectPrefab, effectPosition, groundCrackEffectPrefab.transform.rotation); ShockwaveRing shockwave = effectObject.GetComponent(); if (shockwave != null) { shockwave.Play(); } } unit.ApplyAreaSkillDamage(skillRadius, skillDamage, false); isSkillReady = false; } private void OnSkillFinished() { isSkillReady = false; } }