虽然这是一个很简单的游戏,但,功能还是不少的,起码是一个能正常玩的游戏了。
本游戏包含以下功能:
1.场景切换
带Loading功能,目前Loading只是加载了一个LoadingUI,大家可以自行修改这个UI,不过,目前不支持进度条;
2.从配置文件读取并加载实体
GF自带,没什么好说的
3.状态机
使用的是框架的状态机功能,用于控制角色的站立、行走、攻击、受伤等状态,使用的是并发状态机(一个角色用多个状态机控制)、分层状态机(状态继承)。
这部分写得比较烂,因为目前状态很少(没有任何buff状态),运行起来还算正常。后续状态增加之后,我再努力优化这部分代码,也期待朋友们的Pull Request。
4.怪物生成器
游戏的核心功能之一,因为本游戏的怪物是随着时间的推移而出场的,所以写了一个生成器。
支持创建多个生成器,生成器参数通过配置文件(MonsterCreater.csv)进行配置:GF_JustOneLevel/MonsterCreater.csv at master · mutouzdl/GF_JustOneLevel · GitHub
5.武器
这是顺着GF框架的starforce项目的武器来做的,武器分为三类:自动触发、手动触发、技能触发。
自动触发类似与飞机游戏那种子弹,目前还没有添加这种武器,但是逻辑是支持的;
手动触发就是玩家点击攻击按钮时触发的武器;
技能触发就是玩家点击技能按钮时触发的武器。
手动触发类型的武器能配置多个(比如点击攻击按钮后,5个武器同时发射)。
主角的武器会自动绑定到操作界面,根据武器类型和数量,生成对应的按钮,操作界面是UIPlayerOperate。
6.攻击和技能
本游戏的所有攻击、技能都使用【武器】来实现,武器通过子弹来展现。
如近战攻击,配置了一个透明的、碰撞范围较大的、速度为0的子弹,这样角色在攻击的时候看起来就是近战的;
如远程攻击,配置一个正常的、有速度的、加上特效的子弹,这个就是子弹的正常功能了;
如魔法攻击,配置一个远程子弹,并且加上魔力消耗,就变成了技能了。
目前在子弹特效这部分做的比较差,比如目前有粒子特效和激光射线两种特殊效果的子弹,都放在一个BulletEffect里处理了。同样是未来优化,以及,非常渴望Pull Request。
7.魔力泉
也是本游戏的核心功能之一,游戏中有三处魔力泉,玩家角色进入魔力泉后,每隔一定时间就会收到一些影响(如掉血后加攻击、产生克隆英雄等)。
魔力泉没有什么特别的技术,就是碰撞加定时处理逻辑。
8.移动控制器
支持不同类型的移动控制器,实现IMoveController接口即可,怪物的移动AI也是通过移动控制器来实现的。
9.其他小功能
以上就是我能想到的值得一提的功能了,剩下的都是些小东西:对话确认框、死亡后花金币续命、杀死怪物后吸收怪物部分属性、怪物在短时间内受到三次攻击后会往后弹一段距离。