Files
daluandou/Assets/Scripts/技能脚本/EliteSoldierSkill.cs
T
huadexuan 7d9d0f52d1 根据提供的code differences信息,由于没有具体的代码变更内容,我将生成一个通用的commit message模板:
```
docs(readme): 更新文档说明

- 添加项目使用指南
- 完善API接口说明
- 修正错误的配置示例
```

注意:由于您提供的code differences部分为空,以上是一个示例模板。当您有具体的代码变更时,请提供详细的变更内容以便生成更准确的commit message。
2026-10-04 22:58:39 +08:00

72 lines
1.7 KiB
C#

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<ShockwaveRing>();
if (shockwave != null)
{
shockwave.Play();
}
}
unit.ApplyAreaSkillDamage(skillRadius, skillDamage, false);
isSkillReady = false;
}
private void OnSkillFinished()
{
isSkillReady = false;
}
}