这个脚本定义了一种特殊的子弹------便便子弹 (TshitBullect),它继承自一个通用的子弹基类 Bullect。它的特殊之处在于:击中敌人后可以附加 减益效果**(debuff)** ,比如减速、持续伤害等,并且减益效果的强度和持续时间会随着炮塔等级(towerLevel)提升
继承关系
- 父类 :
Bullect
声明
声明
BullectProperty类型的变量(存储子弹所携带的 减益效果参数-减益效果持续时间、减益效果的强度)结构体
BullectProperty(轻量级的数据结构,使用结构体而非类的目的是减少内存分配,适合频繁创建子弹的场景。
)
public struct BullectProperty { public float debuffTime; public float debuffValue; }
在Start() 中初始化
这里根据 炮塔等级
towerLevel动态计算减益效果的数值:
持续时间 = 等级 × 0.4 秒
减益强度 = 等级 × 0.3
重写方法
protected override void OnTriggerEnter2D(Collider2D collision)
检查目标对象是否激活,未激活返回
检查目标对象的标签是否为
"Monster",为true ,向碰撞体发送"DecreaseSpeed"消息,参数为bullectProperty
*(*使用SendMessage方法调用该怪物身上的DecreaseSpeed方法,并把bullectProperty结构体作为参数传过去。)调用基类
MonsBullect碰撞逻辑
base.OnTriggerEnter2D(collision);
内容补充
使用结构体,可以使不同类型的子弹能携带不同的 debuff 参数,并且这些参数随塔等级成长,并且有很好的扩展性