实现简单回合制框

本篇教程将教大家如何搭建一个简单的回合制游戏框架。
点我下载教学工程

通过变量控制回合阶段

我们在本教程中通过变量控制一个回合的不同阶段。

  • 0:玩家的行动阶段,在此阶段下玩家可以进行攻击等行为操作
  • 1:效果执行阶段,当玩家进行了如攻击、使用道具等操作后,进入效果执行阶段。 在此阶段下,操作UI隐藏,执行具体行为逻辑,并在执行结束后判断游戏是否胜利。 如游戏继续则返回阶段0,否则返回阶段2或3
  • 2:当进入该阶段时游戏胜利
  • 3:当进入该阶段时游戏失败

搭建场景

创建玩家角色和敌人

新建4个人物和4个敌人对象

创建同类组【战斗人物组】并将战斗角色放入同类组中

在同类组下新建5个实例变量,用于战斗时逻辑处理

将敌人的【是否敌人】变量设置为1

【行动速度】决定了一回合内谁先行动,数值越大越优先行动,同生命、攻击力一样可自行设置。本教程中默认为从玩家到敌人行动速度为8~1.

【人物名称】在本教程中用于显示战斗文本,可自行填写对应的对象名

将战斗人物放入场景

放置行为按钮

本教程中,玩家将可以进行两种操作:攻击和跳过回合
分别建立两个按钮,并将其放入“操作按钮”图层组中

新建显示用文本

为了知道当前战斗的情况,我们建立两个文本对象,分别用于显示当前回合数、当前人物操作

建立回合控制变量

新建两个数值变量,用于显示当前回合以及当前回合所处阶段,初始值均为0

按阶段实现回合逻辑

阶段0所需实现内容

首先我们实现阶段0,也就是可行动阶段。在该阶段,我们需要实现以下功能

  • 检测行动顺序: 先检测战斗人物的行动顺序。 并分别处理敌人和玩家的逻辑。 如果该回合没有尚未行动的人物,则进入下一回合。
  • 玩家行动: 在玩家的回合,显示行为按钮,等待玩家按下按钮进入具体实现逻辑
  • 敌人: 自动选择一名尚未行动的我方单位进行攻击

检测是否进入阶段0

新建事件分组,添加条件判断当前进入阶段0
同时先显示“操作按钮”图层(也可以等到判定是玩家的回合在显示)

检测行动顺序

为了记录战斗人物的行动顺序,我们建立一个数组来保存

添加子事件,检测数组是否为空,如果数组为空,重新按顺序添加人物到数组中,回合数+1。

新建事件分组,实现“更新行动顺序”动作组逻辑。
使用系统组件提供的排序遍历循环条件,通过行动速度对战斗人物组进行循环,并将uid加入数组


处理当前行动人物是玩家时逻辑

比较uid,获得第一个行动的战斗人物,判断是否是玩家

为了记录当前操作的是哪一个人物,新建变量【当前行动人物UID】,并将战斗人物的uid保存到变量中。同时更新行动信息文本对象的内容

在阶段0开始时,我们已经将操作按钮图层显示出来,用户只需要点击对应按钮即可进行战斗。 战斗的详细逻辑将在下面阶段1中讲解。

处理当前行动人物是敌人时逻辑

同样比较uid,判断是否是敌人,如果是,执行敌人攻击动作组。(下面阶段1教程中会实现具体敌人攻击逻辑)

阶段0事件总览

阶段1所需实现内容

当敌人攻击、或玩家进行操作后,进入阶段1执行具体的逻辑。 本教程中只实现简单的攻击和跳过回合,您可以根据需求自行实现特殊的行动逻辑。

  • 玩家行为
  • 敌人攻击
  • 胜负判断

玩家攻击

新建事件分组,实现玩家操作

本教程中,玩家的攻击步骤为:

  1. 点击攻击按钮
  2. 点击敌人图标攻击目标

我们需要变量记录当前是否为选择攻击目标的状态,为此新建变量【选择目标】。

当点击攻击按钮时,【选择目标】设为1,并更新行动信息文本组件内容

当【选择目标】=1时,点击敌人图标,攻击敌人。动作组参数为作为目标的敌人的uid

现在我们实现攻击敌人动作组,先将阶段设置为1,选择目标重置为0。

新建子变量local_攻击力

选中UID为变量【当前行动人物uid】的战斗人物组(也就是当前操作的角色),赋值local_攻击力

选中被设为攻击目标的敌人,减少生命值。
生命值设置公式:clamp(战斗人物组.生命-local_攻击力,0,战斗人物组.生命)

为了更直观的查看攻击效果,我们新建一个文本对象,当人物呗攻击时,生成伤害数字并在一秒后销毁


放入场景

在减少敌人生命值时,创建文本

建立子事件,判断当敌人生命值归零时,销毁敌人,并把敌人从人物行动数组中移除
数组删除公式:人物行动顺序.indexof(战斗人物组.uid)

最后,将当前行动人物从行动数组中去除:人物行动顺序.indexof(当前行动人物UID)

在将当前阶段重置回0后,判断战斗结果,如果敌人全灭则胜利,如果我方全灭则失败

玩家攻击事件全图如下:

玩家操作:跳过当前回合

点击跳过回合按钮时,从行动数组中去除当前角色,进入阶段1. 并在一秒后返回阶段0

敌人攻击

敌人攻击的逻辑与玩家大致相同,区别在于攻击目标目标为随机选择

最后,返回按阶段实现回合逻辑事件组,对阶段1、2、3分别进行相应的设置。(本教程中,胜利阶段与失败阶段为显示文本内容,您可以自行添加逻辑)

以上便是实现简单回合制框架的全部内容。