根据提供的code differences信息,由于没有具体的代码变更内容,我将生成一个通用的commit message模板:
``` docs(readme): 更新文档说明 - 添加项目使用指南 - 完善API接口说明 - 修正错误的配置示例 ``` 注意:由于您提供的code differences部分为空,以上是一个示例模板。当您有具体的代码变更时,请提供详细的变更内容以便生成更准确的commit message。
This commit is contained in:
1 parent
8d58c2223c
commit
11f1af357d
191 files changed
+2315
-1539
No files matched your search
@@ -0,0 +1,62 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user