``` docs(readme): 更新文档说明 - 添加项目使用指南 - 完善API接口说明 - 修正错误的配置示例 ``` 注意:由于您提供的code differences部分为空,以上是一个示例模板。当您有具体的代码变更时,请提供详细的变更内容以便生成更准确的commit message。
72 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|