Buff控制

2020-01-02  本文已影响0人  APP4x

对于每个Buff,抽象出一个BuffBase类

存储BuffData配置数据
id、要显示的特效、持续时间、触发时间间隔、伤害值

如何创建
1.EntityBase里面有AddBuff方法
2.通过BuffControl保存,需要添加的Buff_Id
3.创建出BuffBase对象,在初始化的时候
4.获取开始时间Time.realtimeSinceStartup+配置的时间就是结束时间
5.创建Buff特效

伤害计算:
每一个BuffBase对象里面有计时器,在有效期内,一旦到达触发时间间隔,就触发一次伤害
对象内会保存目标的EntityBase

BuffControl是管理所有的Buff
在Update里面:
1.如果已结束的Buff,删除
2.没结束的Buff,调用Update,进行内部的触发操作

通过旋转道具触发BUFF:
所有旋转的道具,都在人物的rotate节点下

移动时控制人物根节点,旋转时旋转rotate节点
获取方向也根据rotate节点控制

所有旋转的道具,类似于弓箭传说的火箭、盾牌等等

是一个prefab,里面有两个左右对称的mesh,一直在旋转
当碰撞到敌人时,进行攻击

如何转:
在Update里面

this._parent.localRotation = Quaternion.Euler(0f, this._parent.localEulerAngles.y + this.rotate, 0f);

如何攻击:
通过Collider,勾选isTrigger不影响正常移动
OnTriggerEnter方法,根据layer进行碰撞,获取到目标Enity
通过EntityManager获取是不是敌人,如果是的话,进行伤害计算

上一篇下一篇

猜你喜欢

热点阅读