引擎:CocoCreator2.1.0
语言:TypeScript
Git仓库地址:https://github.com/superXfx/GameDesignPatterns.git
定义——
在游戏开发中,触发器可以理解为“陷阱”,当“踩”到时,就执行一系列动作,例如扣血,减速,爆炸或者是加血,加速等正面效果也是可以的。
简而言之就是 触发-->Action 这两部分,新增触发器时只需编写 触发条件 和 动作 即可。
类图——
从类图可以发现,业务上只需写一个继承TriggerBase的类,并实现Action()函数即可。
如果有更多的需求那么重写更多的基类函数即可,例如onExit() ,try()等
另外,TriggerMgr的update()由其所有者UIPlayScene驱动。
接下来看代码
1、基类 TriggerBase
首先注意,mLiveType变量,触发器有“一次性”,“重生”,“永生”三种类型,对应其在被触发后是否移除
自身的逻辑。
Action()和onExit()则分别对应触发时和离开触发器时(只对“永生”类型触发器的有意义)的逻辑,子类重写即可。
核心在这个try()中,其检测触发时调用Action()或是离开时调用onExit()
try()和_update()都是有TriggerMgr驱动的,后面具体讲
2、派生类,如TriSpeedUp,TriggerChangeHero等
可以看到,这两个派生类非常非常短,只是重写Action()并在其中执行加速、变形的操作而已。非常简洁。
至于其执行的操作是通过添加buff实现的,后面会专门写一篇关于buff系统的文章。
3、接下来是TriggerMgr类
可以看出,触发器是由mgr中的udpate()函数驱动的。
4、triggerMgr初始化与驱动
5、添加触发器
综上,整个触发器运行的流程就串起来了。
当需要新增触发器时,只需要写个继承TriggerBase的类,并重写其中的try(),Action()函数即可——对扩展开放,对修改关闭。
下一篇,游戏设计模式 之 Buff系统
https://www.jianshu.com/p/4756fc98fceb