教程:从零开始的ACTION GAME MAKER 第二章

用“链接”连接“状态”

让我们将本次创建的三个状态用链接连接起来,实现状态之间的转换。

思考状态的连接方式(转换条件)

本次的基本逻辑是:如果有左右输入则进入“移动”状态,如果有跳跃输入则进入“跳跃”状态,如果没有输入则进入“待机”状态。

考虑到“移动”的动作,如果有左右输入,则实现“待机”→“移动”;如果没有输入,则实现“移动”→“待机”。

对于“跳跃”,如果有跳跃输入,则实现“待机”→“跳跃”;此外,由于在移动中也希望跳跃,因此似乎也需要“移动”→“跳跃”的转换。从“跳跃”状态出发,当触碰到地面时……即“下方接触到瓦片”时,似乎设置“跳跃”→“待机”的转换即可。

补充:是否需要从“跳跃”连接到“移动”?

即使连接也没有问题,但如果在按下移动键的同时落地,系统会瞬间执行从“待机”到“移动”的转换,因此实际上无需连接。

连接“待机”与“移动”

那么,让我们创建从“待机”到“移动”的链接:当有左右输入时进入“移动”,当没有输入时返回“待机”。

  1. 右键点击“待机”状态,选择“添加链接”。

  1. 从“待机”状态会延伸出一条线,点击“移动”状态以创建链接。这样,“待机”和“移动”就通过链接连接起来了。接下来,设置切换条件(转换条件),使其在有左右输入时切换到“移动”。

  1. 选择创建的链接,在检查器(Inspector)窗口中点击“发生以下输入操作时”的复选框。

  1. 会出现名为“输入操作列表”的新项目,点击显示为“Array[InputCondition]…”的字段将其展开。

  1. 点击展开后出现的“+ 添加输入”按钮。

  2. 在输入操作列表中会出现一个“<空>”项,点击它并选择“新建 输入相关条件”。

  1. “<空>”会变为“输入相关条件”,再次点击将其展开。

  1. 会出现新项目,请按如下方式设置:

输入类型:四方向任意输入

上方向输入键:无

下方向输入键:无

左方向输入键:左

右方向输入键:右

输入条件:按下

  1. 这样,当检测到“左”或“右”输入处于“按下”状态时,就会从“待机”状态转换到“移动”状态。

  2. 接下来,创建从“移动”返回“待机”的链接。右键点击“移动”状态,选择“添加链接”。

  1. 选择已创建的从“移动”到“待机”的链接。

  2. 在检查器中勾选“未进行任何输入”。这样,当没有任何按钮或按键被按下时,就会从“移动”转换到“待机”。

放置到场景中并进行测试运行

现在,角色已经可以在地面上左右移动了。让我们将其放置在 stage1.tscn 中,测试其是否正常运行。将 player.tscn 放置在与 stage1 的瓦片相同的图层(BaseLayer)上,然后进行测试运行。

  1. 首先,将编辑器画面从“脚本(Script)”切换到"2D"视图。

  1. 接下来,保存 Player 的更改。右键点击 player 标签页以保存场景。

  1. 切换到 stage1.tscn 标签页。

  2. 在场景窗口中选择 Base (TileMapLayer)。

  1. 将文件系统面板中的 player.tscn 拖拽并释放到编辑器画面中的地面上。

  1. 如果 Player 作为 BaseLayer 的子节点按如下图示配置,则表示正确。

如果它成为了 BaseLayer 以外的子节点,请在场景窗口中拖拽 Player 来移动其位置。如果编辑器中的配置出现偏差,请使用移动模式微调位置。

  1. 点击右上角的“运行项目”按钮进行测试运行。

  1. 如果设置正确,按下左右键角色应会行走,松开按键则应停止。

:warning: 如果角色不动时的检查项目

角色不动:请确认 MoveAndJumpSettings 中的移动键是否已正确设置。

角色未切换为移动动画:请确认从“待机”到“移动”的链接以及 移动状态的动画设置 是否正确。

角色未返回待机状态:请确认从“移动”到“待机”的链接是否正确。

:warning: 出现错误 “ERROR: ID is not set in CameraTargetSettings.”

这是一个警告,提示虽然存在相机跟随设置(CameraTargetSettings),但其内部尚未配置。

目前尚未设置相机跟随功能,因此会出现此提示。由于将在第 4 章进行设置,此处可以暂时忽略。

连接“待机”、“移动”与“跳跃”

接下来,让我们连接“待机”和“移动”到“跳跃”。

  1. 切换回 player 标签页,并将编辑器画面从 2D 视图切换回“脚本(Script)”视图。

图片115

  1. 右键点击“待机”状态创建链接,并将其连接到“跳跃”。

  1. 选择该链接,勾选“发生以下输入操作时”的复选框。

  2. 展开输入操作列表,依次选择“+ 添加输入条件”、“<空>”、“添加输入条件”。

  3. 设置如下:输入类型:用于输入的按键,输入键:跳跃,输入条件:按下瞬间。这样,当在待机状态下按下跳跃键的瞬间,就会转换到跳跃状态。

  4. 接下来,用链接连接“移动”到“跳跃”。其条件与从“待机”到“跳跃”的链接完全相同,即“按下跳跃键瞬间转换”。我们可以复制刚才创建的链接来使用。

  5. 右键点击从“待机”到“跳跃”的链接,选择“复制”。

  1. 右键点击“移动”状态,选择“粘贴链接”。

  1. 与添加新链接时一样,从“移动”状态会延伸出一条线,点击“跳跃”进行连接。

  1. 点击“移动”→“跳跃”的链接,简单检查一下是否复制正确。如果显示如下内容,则表示成功。

  1. 创建从“跳跃”到“待机”的链接。右键点击“跳跃”状态创建链接,并将其连接到“待机”。

  1. 从“跳跃”到“待机”的转换条件是“接触地面”,这与输入无关。本次不使用输入条件,而是使用“其他条件”。请点击检查器窗口中的“+ 添加其他条件”。

  1. 会弹出一个名为“选择其他条件”的新窗口。在这里可以选择除输入以外的各种条件。本次因为是接触地面瓦片,请选择“接触瓦片”。

  1. 在条件内容中,勾选“从该对象视角的接触方向”下的“下”复选框。这样,只有当对象的下方接触到瓦片时才会进行转换。

  1. 如果显示如下图示,则表示正确。

  1. 点击右上角的测试运行按钮进行测试。尝试在待机状态和移动状态下按下 Z 键进行跳跃。如果正常运行,则完成。

无法正常运行时的检查清单

无法跳跃:请确认从“移动”和“待机”到“跳跃”的链接是否正确?在跳跃动作中是否已正确勾选“执行跳跃”?

无法落地:请确认从“跳跃”到“待机”的链接是否正确?