本篇教程将教大家如何搭建一个简单的回合制游戏框架。
点我下载教学工程
你可以观看视频学习,也可以下拉查看文字教程
回合制框架的教程视频
我们在本教程中通过变量控制一个回合的不同阶段。
新建4个人物和4个敌人对象
创建同类组【战斗人物组】并将战斗角色放入同类组中
在同类组下新建5个实例变量,用于战斗时逻辑处理
将敌人的【是否敌人】变量设置为1
【行动速度】决定了一回合内谁先行动,数值越大越优先行动,同生命、攻击力一样可自行设置。本教程中默认为从玩家到敌人行动速度为8~1.
【人物名称】在本教程中用于显示战斗文本,可自行填写对应的对象名
将战斗人物放入场景
本教程中,玩家将可以进行两种操作:攻击和跳过回合
分别建立两个按钮,并将其放入“操作按钮”图层组中
为了知道当前战斗的情况,我们建立两个文本对象,分别用于显示当前回合数、当前人物操作
新建两个数值变量,用于显示当前回合以及当前回合所处阶段,初始值均为0
首先我们实现阶段0,也就是可行动阶段。在该阶段,我们需要实现以下功能
新建事件分组,添加条件判断当前进入阶段0
同时先显示“操作按钮”图层(也可以等到判定是玩家的回合在显示)
为了记录战斗人物的行动顺序,我们建立一个数组来保存
添加子事件,检测数组是否为空,如果数组为空,重新按顺序添加人物到数组中,回合数+1。
新建事件分组,实现“更新行动顺序”动作组逻辑。
使用系统组件提供的排序遍历循环条件,通过行动速度对战斗人物组进行循环,并将uid加入数组
比较uid,获得第一个行动的战斗人物,判断是否是玩家
为了记录当前操作的是哪一个人物,新建变量【当前行动人物UID】,并将战斗人物的uid保存到变量中。同时更新行动信息文本对象的内容
在阶段0开始时,我们已经将操作按钮图层显示出来,用户只需要点击对应按钮即可进行战斗。 战斗的详细逻辑将在下面阶段1中讲解。
同样比较uid,判断是否是敌人,如果是,执行敌人攻击动作组。(下面阶段1教程中会实现具体敌人攻击逻辑)
当敌人攻击、或玩家进行操作后,进入阶段1执行具体的逻辑。 本教程中只实现简单的攻击和跳过回合,您可以根据需求自行实现特殊的行动逻辑。
新建事件分组,实现玩家操作
本教程中,玩家的攻击步骤为:
我们需要变量记录当前是否为选择攻击目标的状态,为此新建变量【选择目标】。
当点击攻击按钮时,【选择目标】设为1,并更新行动信息文本组件内容
当【选择目标】=1时,点击敌人图标,攻击敌人。动作组参数为作为目标的敌人的uid
现在我们实现攻击敌人动作组,先将阶段设置为1,选择目标重置为0。
新建子变量local_攻击力
选中UID为变量【当前行动人物uid】的战斗人物组(也就是当前操作的角色),赋值local_攻击力
选中被设为攻击目标的敌人,减少生命值。
生命值设置公式:clamp(战斗人物组.生命-local_攻击力,0,战斗人物组.生命)
为了更直观的查看攻击效果,我们新建一个文本对象,当人物呗攻击时,生成伤害数字并在一秒后销毁
放入场景
在减少敌人生命值时,创建文本
建立子事件,判断当敌人生命值归零时,销毁敌人,并把敌人从人物行动数组中移除
数组删除公式:人物行动顺序.indexof(战斗人物组.uid)
最后,将当前行动人物从行动数组中去除:人物行动顺序.indexof(当前行动人物UID)
在将当前阶段重置回0后,判断战斗结果,如果敌人全灭则胜利,如果我方全灭则失败
点击跳过回合按钮时,从行动数组中去除当前角色,进入阶段1. 并在一秒后返回阶段0
敌人攻击的逻辑与玩家大致相同,区别在于攻击目标目标为随机选择
最后,返回按阶段实现回合逻辑事件组,对阶段1、2、3分别进行相应的设置。(本教程中,胜利阶段与失败阶段为显示文本内容,您可以自行添加逻辑)
以上便是实现简单回合制框架的全部内容。