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

- 添加项目使用指南
- 完善API接口说明
- 修正错误的配置示例
```
2026-10-01 16:01:43 +08:00

63 lines
1.5 KiB
C#

using UnityEngine;
public class ShieldGuardSkill : UnitSkill
{
[Header("盾牌参数")]
[Min(1f)]
public float shieldDurability = 220f;
[Min(0.1f)]
public float shieldDuration = 4f;
[Range(0f, 1f)]
public float damageReduction = 0.35f;
public Vector3 shieldLocalPosition = new Vector3(0f, 1f, 0.7f);
public Vector3 shieldSize = new Vector3(1.5f, 1.8f, 0.12f);
private ShieldBarrier shield;
public ShieldBarrier ActiveShield => shield;
public override void ReleaseSkill()
{
EnsureShield();
shield.Refresh(shieldDurability, shieldDuration, shieldLocalPosition, shieldSize);
}
public override float ModifyIncomingDamage(float damage, GameObject attacker)
{
if (shield == null || !shield.IsActive)
{
return damage;
}
if (shield.TryBlock(attacker, damage))
{
return damage * (1f - damageReduction);
}
return damage;
}
private void EnsureShield()
{
if (shield != null)
{
return;
}
GameObject shieldObject = new GameObject("ShieldBarrier");
shieldObject.transform.SetParent(unit.transform, false);
BoxCollider boxCollider = shieldObject.AddComponent<BoxCollider>();
boxCollider.isTrigger = true;
boxCollider.size = shieldSize;
shield = shieldObject.AddComponent<ShieldBarrier>();
shield.Configure(unit, boxCollider);
shieldObject.SetActive(false);
}
}