用“链接”连接“状态”
让我们将本次创建的三个状态用链接连接起来,实现状态之间的转换。
思考状态的连接方式(转换条件)
本次的基本逻辑是:如果有左右输入则进入“移动”状态,如果有跳跃输入则进入“跳跃”状态,如果没有输入则进入“待机”状态。
考虑到“移动”的动作,如果有左右输入,则实现“待机”→“移动”;如果没有输入,则实现“移动”→“待机”。
对于“跳跃”,如果有跳跃输入,则实现“待机”→“跳跃”;此外,由于在移动中也希望跳跃,因此似乎也需要“移动”→“跳跃”的转换。从“跳跃”状态出发,当触碰到地面时……即“下方接触到瓦片”时,似乎设置“跳跃”→“待机”的转换即可。
补充:是否需要从“跳跃”连接到“移动”?
即使连接也没有问题,但如果在按下移动键的同时落地,系统会瞬间执行从“待机”到“移动”的转换,因此实际上无需连接。
连接“待机”与“移动”
那么,让我们创建从“待机”到“移动”的链接:当有左右输入时进入“移动”,当没有输入时返回“待机”。
- 右键点击“待机”状态,选择“添加链接”。
- 从“待机”状态会延伸出一条线,点击“移动”状态以创建链接。这样,“待机”和“移动”就通过链接连接起来了。接下来,设置切换条件(转换条件),使其在有左右输入时切换到“移动”。
- 选择创建的链接,在检查器(Inspector)窗口中点击“发生以下输入操作时”的复选框。
- 会出现名为“输入操作列表”的新项目,点击显示为“Array[InputCondition]…”的字段将其展开。
-
点击展开后出现的“+ 添加输入”按钮。
-
在输入操作列表中会出现一个“<空>”项,点击它并选择“新建 输入相关条件”。
- “<空>”会变为“输入相关条件”,再次点击将其展开。
- 会出现新项目,请按如下方式设置:
输入类型:四方向任意输入
上方向输入键:无
下方向输入键:无
左方向输入键:左
右方向输入键:右
输入条件:按下
-
这样,当检测到“左”或“右”输入处于“按下”状态时,就会从“待机”状态转换到“移动”状态。
-
接下来,创建从“移动”返回“待机”的链接。右键点击“移动”状态,选择“添加链接”。
-
选择已创建的从“移动”到“待机”的链接。
-
在检查器中勾选“未进行任何输入”。这样,当没有任何按钮或按键被按下时,就会从“移动”转换到“待机”。
放置到场景中并进行测试运行
现在,角色已经可以在地面上左右移动了。让我们将其放置在 stage1.tscn 中,测试其是否正常运行。将 player.tscn 放置在与 stage1 的瓦片相同的图层(BaseLayer)上,然后进行测试运行。
- 首先,将编辑器画面从“脚本(Script)”切换到"2D"视图。
- 接下来,保存 Player 的更改。右键点击 player 标签页以保存场景。
-
切换到 stage1.tscn 标签页。
-
在场景窗口中选择 Base (TileMapLayer)。
- 将文件系统面板中的 player.tscn 拖拽并释放到编辑器画面中的地面上。
- 如果 Player 作为 BaseLayer 的子节点按如下图示配置,则表示正确。
如果它成为了 BaseLayer 以外的子节点,请在场景窗口中拖拽 Player 来移动其位置。如果编辑器中的配置出现偏差,请使用移动模式微调位置。
- 点击右上角的“运行项目”按钮进行测试运行。
- 如果设置正确,按下左右键角色应会行走,松开按键则应停止。
如果角色不动时的检查项目
角色不动:请确认 MoveAndJumpSettings 中的移动键是否已正确设置。
角色未切换为移动动画:请确认从“待机”到“移动”的链接以及 移动状态的动画设置 是否正确。
角色未返回待机状态:请确认从“移动”到“待机”的链接是否正确。
出现错误 “ERROR: ID is not set in CameraTargetSettings.”
这是一个警告,提示虽然存在相机跟随设置(CameraTargetSettings),但其内部尚未配置。
目前尚未设置相机跟随功能,因此会出现此提示。由于将在第 4 章进行设置,此处可以暂时忽略。
连接“待机”、“移动”与“跳跃”
接下来,让我们连接“待机”和“移动”到“跳跃”。
- 切换回 player 标签页,并将编辑器画面从 2D 视图切换回“脚本(Script)”视图。

- 右键点击“待机”状态创建链接,并将其连接到“跳跃”。
-
选择该链接,勾选“发生以下输入操作时”的复选框。
-
展开输入操作列表,依次选择“+ 添加输入条件”、“<空>”、“添加输入条件”。
-
设置如下:输入类型:用于输入的按键,输入键:跳跃,输入条件:按下瞬间。这样,当在待机状态下按下跳跃键的瞬间,就会转换到跳跃状态。
-
接下来,用链接连接“移动”到“跳跃”。其条件与从“待机”到“跳跃”的链接完全相同,即“按下跳跃键瞬间转换”。我们可以复制刚才创建的链接来使用。
-
右键点击从“待机”到“跳跃”的链接,选择“复制”。
- 右键点击“移动”状态,选择“粘贴链接”。
- 与添加新链接时一样,从“移动”状态会延伸出一条线,点击“跳跃”进行连接。
- 点击“移动”→“跳跃”的链接,简单检查一下是否复制正确。如果显示如下内容,则表示成功。
- 创建从“跳跃”到“待机”的链接。右键点击“跳跃”状态创建链接,并将其连接到“待机”。
- 从“跳跃”到“待机”的转换条件是“接触地面”,这与输入无关。本次不使用输入条件,而是使用“其他条件”。请点击检查器窗口中的“+ 添加其他条件”。
- 会弹出一个名为“选择其他条件”的新窗口。在这里可以选择除输入以外的各种条件。本次因为是接触地面瓦片,请选择“接触瓦片”。
- 在条件内容中,勾选“从该对象视角的接触方向”下的“下”复选框。这样,只有当对象的下方接触到瓦片时才会进行转换。
- 如果显示如下图示,则表示正确。
- 点击右上角的测试运行按钮进行测试。尝试在待机状态和移动状态下按下 Z 键进行跳跃。如果正常运行,则完成。
无法正常运行时的检查清单
无法跳跃:请确认从“移动”和“待机”到“跳跃”的链接是否正确?在跳跃动作中是否已正确勾选“执行跳跃”?
无法落地:请确认从“跳跃”到“待机”的链接是否正确?




























