第 2 章:让我们创建一个简单的舞台!
第 2 章的目标
从这里开始,我们将实际构建一个动作射击游戏。
在本章中,我们将逐步创建一个简单的舞台,其中:
- 玩家角色可以行走和跳跃。
到本章结束时,您将得到如下所示的示例效果。
工作流程
-
首先,我们需要一个用于舞台本身的场景。
-
在该舞台内,我们将放置角色可以行走和跳跃的平台。
-
接下来,我们将创建一个角色场景,然后使用可视化脚本为其添加移动功能。
从这里开始,我们将实际构建一个动作射击游戏。
在本章中,我们将逐步创建一个简单的舞台,其中:
到本章结束时,您将得到如下所示的示例效果。
首先,我们需要一个用于舞台本身的场景。
在该舞台内,我们将放置角色可以行走和跳跃的平台。
接下来,我们将创建一个角色场景,然后使用可视化脚本为其添加移动功能。
在第 1 章中,我们仅使用 Godot Engine 的功能创建了所有内容。
从这一点开始,我们将开始使用 ACTION GAME MAKER 的附加功能来构建我们的游戏。
在 Godot Engine 中,您通常通过逐个将节点添加到根节点来创建角色、关卡和其他元素。然而,这可能非常耗时。
为了简化操作,ACTION GAME MAKER 提供了两种主要的预设场景类型:
游戏场景 (Game Scene)
游戏对象 (Game Object)
在 ACTION GAME MAKER 中,您通过在游戏场景内放置游戏对象来创建游戏。
由 ACTION GAME MAKER 添加的功能(例如游戏场景和游戏对象)均标有蓝橙双色图标。
每当您看到这些彩色节点或按钮时,即表示它们是 ACTION GAME MAKER 的功能。
相比之下,原始的 Godot 节点使用单色图标(白色、蓝色、绿色等),尽管少数节点可能使用多种颜色。
让我们开始设置一个游戏场景。
在场景选项卡中,点击**“+”(添加新场景)**按钮。
在场景窗口中,在创建根节点下,选择游戏场景。
场景窗口中将自动出现大量节点。这些是构成游戏场景的预设节点。
由于这是一个新场景,让我们保存它。
右键点击 [未保存] 选项卡,然后选择另存场景。
因为这是一个关卡(课程)场景,将其保存为stage1.tscn。
你可能会注意到突然添加了大量节点——但每个节点具体是做什么的呢?
在动作游戏制作器中,游戏场景是使用“层级”的概念来组织的。
层级是表达深度的一种方式,类似于剧院舞台:
当“通过放置在前方的一台摄像机”观看时,这些层级共同构成了游戏的场景。
动作游戏制作器提供了七个默认层级。每个层级都有不同的名称和图标,功能略有不同,但它们按照下图所示堆叠。
默认情况下,每个层级都已放置了最少必要的预设节点,以及一个捕捉整个场景的摄像机。
如果你仔细观察这七个图标的细节,会发现它们存在一些差异。从广义上讲,有两种类型:
区别在于:
使用剧院类比:
在 ACTION GAME MAKER 中,场景通过专用的场景过渡系统进行管理。
该系统允许您定义场景之间如何连接,使用类似于视觉脚本的操作。
首先,让我们将刚才创建的场景设置为初始场景,这是游戏启动时显示的第一个场景。
在屏幕顶部中央,将编辑器模式切换为SceneTransition。
将出现一个空白网格。
从左下角的文件系统面板中,将之前保存的场景(stage1.tscn)拖放到网格上。
如果stage1.tscn现在出现在网格上,则完成设置。
从顶部中央按钮切换回2D模式,以返回之前的视图。

在 ACTION GAME MAKER 中,一个名为core.tscn的特殊场景始终在后台运行。
通常情况下,它会加载并显示指定的游戏场景。
如果您未设置初始场景,则只会显示core.tscn——这意味着游戏将以空白屏幕启动。
现在,让我们为舞台创建平台。
我们需要一个地面和一些可供跳跃的悬浮平台。虽然有多种方法可以使用不同的节点来创建平台,但由于我们将构建一个具有多种形状的大型舞台,因此我们将使用专为这一目的设计的节点:图块(tiles)。
图块就像地板砖一样——一种在网格中重复的小图像,用于构建更大的结构,例如平台。
首先,让我们准备图块图像。
通过右键点击并保存来下载提供的图像。
![]()
正如第 1 章所解释的,Godot 引擎仅支持放置在项目文件系统内的资源。
可以将文件系统想象为一个仓库,您的游乐园材料必须存放在这里才能被使用。
导入方法很简单:只需将文件拖放到编辑器中即可。
保持 PC 上包含下载图像的文件夹打开。
在编辑器中,转到文件系统面板(左下角)并选择 res://。
将 tile.png 从您的 PC 文件夹拖入编辑器窗口。
接下来,让我们决定将图块放置在哪个图层中。
我们将使用基础图层(BaseLayer),这是专为地面图块设计的默认图层。
在基础图层内部,您会看到三个节点:Base、BaseDecoration 和 BaseCover。
这些实际上是TileMapLayer 节点,只是重命名了。
为什么要有同一节点的三个版本?
这样您可以将图块堆叠在一起以创建深度感。
例如,您可能想在地板图块上方放置一个火炬。
如果只有一个图层,放置火炬会覆盖地面图块。
如果有多个图层,您可以将它们堆叠在一起,同时显示地面和装饰。
现在,选择名为 Base 的节点来放置图块。
在底部,您会看到一个面板,显示类似以下内容:
“未找到图块集(TileSet)。请在检查器中创建图块集。”
图块集(TileSet) 定义了您将在该 TileMapLayer 节点中使用的图块的基本信息:
每个图块的大小和形状
角色是否可以与其碰撞或穿过它
我们准备的图块图像是一个 48×48 像素的正方形。它将作为玩家可以站立的平台,因此需要启用碰撞。
在**检查器(Inspector)**中,在 TileSet 旁边,点击 ,然后选择 新建图块集(New TileSet)。
现在您可以编辑图块集属性。按如下方式设置:
图块形状(Tile Shape):正方形
图块大小(Tile Size):x = 48 px, y = 48 px
展开**物理图层(Physics Layers)**部分并点击 + 添加元素(Add Element)。
将 碰撞图层 / 碰撞掩码(Collision Layer / Collision Mask) 保持为默认值。
如果您的检查器看起来像添加了物理图层 0 的示例,则您的图块集设置已完成。
在 Godot 中,碰撞由两个设置决定:
碰撞图层(Collision Layer):节点所属的组
碰撞掩码(Collision Mask):该节点可以与哪些组发生碰撞
我们将在第 3 章中更详细地解释这一点。
创建图块集后,底部的消息将更改为类似以下内容:
“图块集没有源(No source for TileSet)”。
这意味着我们仍然需要为图块分配一个图像。
我们还需要为它们设置碰撞形状(墙壁/地板)。
在底部面板中,将选项卡从 TileMap 切换到 TileSet。
将 tile.png 从文件系统面板拖入 TileSet 编辑器左侧的黑色框中。
将弹出一个新窗口。由于我们的图块是 48×48 的正方形,请设置 图块大小:x=48, y=48,然后点击 是(Yes)。
下一个窗口将询问:“将图块格式设置为自动图块(Auto Tile)?”请选择 否(No)。
图集(Atlas) 是一个包含许多较小图像(例如地板、墙壁、斜坡)的大型图像文件。
引擎只需加载一个大型图像并将其切片为图块,而不是处理许多单独的图像文件。
这提高了效率。
自动图块(Auto Tile) 是 ACTION GAME MAKER 独有的功能之一。
它会自动将按特定格式放置的图块图集整齐排列,但本次我们不会使用它。
在 TileSet 编辑器中,切换到顶部的 选择(Select) 选项卡。
在右侧,点击图块图像以选中它。
面板的下半部分将更改以显示其属性。
向下滚动并打开 物理 > 物理图层 0(Physics > Physics Layer 0)。
点击 添加多边形工具(Add Polygon Tool) 按钮(带有“+”图标的正方形)。
此工具用于添加顶点以绘制多边形。
多边形只是通过连接点定义的形状。
点击绿色正方形的右上角。将出现一个菱形点。
以顺时针顺序对右下角、左下角和左上角执行相同的操作。
最后,再次点击您放置的第一个点(右上角)。
如果点位置错误:使用 编辑点工具(Edit Point Tool)(带箭头图标的正方形)来移动点。
如果添加了太多点:使用 删除点工具(Delete Point Tool)(带 X 图标的正方形)来删除多余的点。
在此阶段,您已成功导入图块、创建图块集、分配图像并设置碰撞,使其可以充当平台。
现在我们已经准备好了图块,让我们开始放置它们。
我们的目标是在摄像头的可见范围内创建地板和一些平台。
查看屏幕中央的编辑器视图。
你应该会看到细紫色线条形成一个矩形,该矩形以红色和绿色线条交叉的点为中心。
这个紫色矩形代表摄像头的可见区域。
首先,调整视图以确保摄像头区域完全可见。
在编辑器视图中,按住鼠标中键(滚轮点击)。
光标应变为十字形箭头。
按住的同时移动鼠标以平移视图,直到紫色矩形完全可见。
如果紫色矩形看起来太小或太大,请使用鼠标滚轮进行缩放,直到它完美地适应屏幕。
在底部面板中,将选项卡切换回TileMap(图块绘制)。
你之前创建的图块现在应该可用。
在底部面板的右侧,点击该图块以选中它。
将鼠标移动到编辑器视图中——图块应作为预览显示在光标下方。
左键单击以放置图块。
右键单击以擦除图块。
如果无法执行操作,编辑器面板可能处于“移动模式”,请将其切换回“选择模式”。
让我们确认一下游戏中的效果。
在右上角菜单中,点击运行项目 (F5)。
如果设置正确,场景应显示由图块构成的地板和平台。
如果图块未按预期显示,请检查以下内容:
图块是否放置在紫色矩形内(摄像头区域)?
在场景过渡 (SceneTransition) 中,初始场景是否正确设置为 stage1.tscn?
现在我们已经有了一个简单的舞台,下一步通常是创建玩家角色。但在这样做之前,让我们先配置输入映射(控制)。
输入映射允许您定义:
在本教程中,我们将创建一个简单的动作射击游戏,仅包含基本移动。目前,我们只需要四个操作:
攻击
跳跃
向右移动
向左移动
(稍后,您可以添加更多操作,如滑行、武器选择或爬梯子,但目前我们只需创建基本操作。)
从左上角的项目菜单中,打开项目设置。
会出现一个窗口。将顶部的选项卡从常规切换到输入映射。
在标有**“添加新操作”**的字段中输入名称。
输入 Right,然后单击右侧的 + 添加 按钮。
重复上述过程以添加以下操作:
Left
Jump
Attack
如果您的列表如下所示,说明您操作正确。
接下来,单击操作 Right 最右侧的 + 按钮(添加事件)。
会出现一个标题为**“为 Right 添加事件”**的窗口。按下键盘上的 →(右箭头) 键。
如果现在显示 Right 或 Right (Physical) 或 Right(Unicode),则说明成功。单击 确定。
对其他操作重复相同步骤:
Left → 分配 ←(左箭头) 键
Jump → 分配 Z 键
Attack → 分配 X 键
当您的输入映射如下面的截图所示时,即完成。
最后,单击 关闭 按钮以完成设置。
现在,让我们为我们的游戏对象创建一个场景。
就像创建Stage1时一样,点击编辑器顶部的**“+”(添加新场景)**按钮。
在创建根节点下,选择游戏对象。
将显示创建新游戏对象窗口。
在ACTION GAME MAKER中,您可以从模板创建各种对象。
请按如下方式设置:
对象名称:Player
模板:characters
类型:2DSprite Character Base
对象组:Player
由输入设备操作的对象:开启
添加CameraTargetSettings节点:开启
将生成一个包含多个节点的新场景。
为场景命名并保存。您可以直接将其保存为player.tscn。
乍一看,游戏对象中的许多节点可能会让人感到不知所措。
然而,这些节点大致可以分为三类:
这些节点存储可以在 ACTION GAME MAKER 的可视化脚本 中访问和使用的数据。
通过在此处设置值——例如 HP、攻击力、移动速度和跳跃强度——您可以使它们可在可视化脚本中使用。
这些节点定义了用于碰撞检测的形状。例如:
CollisionShape2D → 与墙壁和地面的碰撞
AttackCollision → 攻击判定框的形状
HitCollision → 检测受到伤害时的形状
AnimationPlayer → 控制角色的动画
Sprite2D → 提供动画中使用的图像
在配置游戏对象时,您将使用这三组节点。
ACTION GAME MAKER 的可视化脚本通过读取这些节点中的数据来工作。
因此,可视化脚本只能分配给 GameObject 节点(在本例中为 Player 节点)。
在本节中,我们仅设置移动和跳跃。
这意味着我们暂时不需要配置攻击或伤害。
目前我们只需要:
玩家图像
移动和跳跃的动画
移动速度
跳跃强度
移动按键
因此,在本部分中,我们将仅配置这些元素。
让我们将玩家的图像应用到用于显示图像的 Sprite2D 节点上。我们将使用本教程提供的图像。
右键单击下方的图像并将其保存到计算机。
将下载的图像拖放到 文件系统 中以导入它。
选择将显示图像的 Sprite2D 节点。
在右侧的 检查器面板 中找到 Texture(纹理) 属性(当前设置为 <empty>)。
将导入的 player.png 文件拖放到该属性上。
图像将会出现——但您会注意到 所有 9 个角色 同时显示。
这是因为该文件是一个 精灵表(sprite sheet),即包含所有动画帧的单个图像(一种图集图像,类似于我们之前讨论过的瓦片)。
我们需要将 精灵表分割 成更小的帧,并告诉 Godot 要显示哪一部分。
在检查器中展开 Animation(动画) 部分。
将 Hframes(水平帧数) 设置为 5,将 Vframes(垂直帧数) 设置为 2。
这将图像划分为 5 × 2 = 10 个小帧。
尝试点击检查器中 Frame(帧) 属性的上/下箭头。
每次点击时,显示的图像都会略有变化。
游戏动画正是以这种方式创建的——像翻页书一样依次切换帧。
您可能会觉得奇怪,第一帧的标签是 0 而不是 1。
在编程中,列表通常从 0 开始。
Godot 遵循相同的约定,因此帧编号也从 0 开始。
在 Godot Engine / ACTION GAME MAKER 中,动画是使用 AnimationPlayer 节点创建的。
该系统采用基于时间轴的风格,类似于视频编辑。
在时间轴上,您可以创建轨道(用于图像、声音等),并放置关键帧(事件)。随着时间推移,AnimationPlayer 会执行其轨道上的每个关键帧。
可以将其想象成乐队的乐谱:
在这个类比中:
本教程中,我们将创建三个基本动画:
我们将使用 AnimationPlayer 来创建这些动画。
在“场景”面板中,选择 AnimationPlayer 节点。
底部将出现一个新的 动画面板(类似于之前的瓦片编辑器)。
点击 动画按钮 并选择 新建。
将弹出一个窗口,要求输入动画名称。首先输入 Idle。输入名称后按 确定。
现在已创建 Idle 动画。
选择 Sprite2D 节点。
在 9 张图像中,Idle 仅使用左上角的帧。
由于左上角的帧是 第 0 帧,我们只需将 Idle 动画设置为显示 第 0 帧。
在检查器中,确认 动画 > 帧 设置为 0。
点击旁边的
+ 按钮。
![]()
这将插入一个 关键帧,将当前帧注册到活动动画中。
将弹出一个窗口。关闭“创建 RESET 轨道”,然后按 创建。
RESET 轨道指定场景的初始状态。
例如,在 Idle 中,您可以将其设置为默认状态。
然而,ACTION GAME MAKER 通常不使用它,因此请保持其 关闭 状态。
时间轴上将出现一条名为 Sprite2D: frame 的轨道。
重复步骤 1–8 以创建 Jump 动画。
跳跃帧是顶行的第三张图像 → 第 2 帧。
如果设置正确,轨道应在 0 秒处显示第 2 帧。
与 Idle 和 Jump 不同,此动画使用 四帧:
为了创建流畅的动作,我们将每 0.2 秒 切换一次帧,并循环播放动画。
如前所述,创建一个名为 Move 的新动画。
首先在 0 秒处设置第 5 帧。
将时间轴播放头移动到 0.2 秒(在显示时间的框中输入“0.2”)。
将 Sprite2D 的帧更改为 6,然后按
+ 按钮 插入关键帧。
现在您应该看到在第 0.2 秒处添加了第 6 帧。
在 0.4 秒 处,设置第 7 帧。
在 0.6 秒 处,设置第 8 帧。
现在所有 4 帧都已放置在时间轴上。
在动画面板的右上角,您会看到一个显示 1 的框(默认长度为 1 秒)。
将其更改为 0.8,因为我们使用了 4 帧,每帧 0.2 秒。
这确保了动画能够平滑循环。
在时间框旁边,点击 循环按钮(圆形箭头)。
这将使动画自动重复播放。
单击一次设置普通循环(动画从头开始重新播放)。
再次单击启用 乒乓循环(动画向前播放,然后向后播放,再向前播放)。
![]()
如果动画显示不正确:
请仔细检查:
至此,您已成功为您的玩家角色创建了 Idle、Jump 和 Move 动画。
在 ACTION GAME MAKER 中,有一个称为动画集(Animation Set)的系统,它可以根据移动方向自动切换动画。
通过在动画集中为最多 8 个方向分配动画,您只需选择该集合一次,动画就会在向右、向左、向上等移动时自动切换。
对于我们的游戏,我们只需要两个移动方向:右和左。
目前,我们只有三个动画——待机(Idle)、跳跃(Jump)和移动(Move),并且它们都面向右。
不过,有一个选项可以自动翻转动画,该选项默认已启用。
这意味着我们无需创建单独的面向左的动画——系统会自动镜像它们。
此外,在这种情况下(仅需左右移动,且面向右的动画可以翻转),我们可以使用批量导入功能快速设置动画集。
在场景面板中,选择玩家节点(GameObject 节点)。

在检查器中,点击标有选择动画播放器(Select Animation Player)的按钮。
将弹出一个节点选择窗口——选择AnimationPlayer节点。
接下来,点击批量加载动画(Bulk Load Animations)按钮。
要确认一切是否正常,请展开动画集部分。
如果成功,您应该会在动画集中看到跳跃、待机和移动动画已列出。
如果动画未出现在集合中:
既然我们已经创建了动画,现在来配置玩家的设置。
我们需要完成三件事:
设置移动使用的按键
调整移动速度和跳跃力度
调整碰撞形状的大小以匹配角色身体
让我们使用之前设置的输入动作来分配移动按键。
在场景面板中,选择 MoveAndJumpSettings 节点。
在检查器中,设置:
左移按键 → Left
右移按键 → Right
接下来,让我们将速度和跳跃力度调整为适合角色的数值。
保持选中 MoveAndJumpSettings 节点,查看检查器。
将 Horizontal Speed(水平速度)的值从 100 改为 300。
现在,当按住按键 1 秒时,角色将移动 300 像素。
找到底部的 Jump Force(跳跃力度)属性。
将其从 500 改为 700。
这意味着当按下跳跃按钮时,角色将以 每秒 700 像素 的速度向上弹起。
CollisionShape2D 节点定义了角色用于与地面及其他物体碰撞的形状。
目前,该形状太小(比角色的头部还小),导致身体会陷入地面。
我们将调整其大小以覆盖整个精灵图。
在场景面板中,选择 CollisionShape2D 节点。
你会看到一个带有橙色控制点的小蓝色矩形——这是当前的碰撞形状。
如果角色当前显示的是 Jump(跳跃)或 Move(移动)帧,请将 AnimationPlayer 切换回 Idle(待机)。
点击并拖动角落的 橙色控制点 来调整矩形大小。
调整碰撞形状,使其覆盖角色的 整个身体。
完成后,你的玩家将正确响应输入,以合适的速度移动和跳跃,并与地面发生碰撞而不会陷入其中。
所有准备工作已完成——现在让我们使用可视化脚本(Visual Script)来控制玩家角色的移动。
首先,我们将附加(添加)一个可视化脚本到玩家身上。
在场景面板中,选择玩家节点(Player node,即 GameObject)。
点击**
+(附加脚本)**按钮。
将弹出一个新窗口,询问是附加VisualScript还是GDScript(标准编程脚本)。
由于我们选择了玩家节点(GameObject),系统将自动选择VisualScript。
只需点击创建(Create)按钮。
编辑器视图将自动切换到脚本(Script)选项卡。
您将看到两个框:State001 和 AnyState。
这就是可视化脚本的工作区。
如果您想返回上一屏幕,只需将顶部的选项卡切换回2D即可。
正如在场景过渡部分之前所解释的,顶部选项卡用于切换编辑器显示的内容。
![]()
正如第 1 章所述,ACTION GAME MAKER 的可视化脚本是通过以下方式构建的:
为角色状态添加行为,以及
通过条件将这些状态相互连接(链接)。
对于我们的游戏,角色只需在舞台上走动并跳跃,我们只需要三个状态:
待机 (Idle)
移动 (Move)
跳跃 (Jump)
通过连接这三个状态并在正确的条件下进行切换,我们可以创建玩家的动作。
让我们先准备待机、移动和跳跃状态,然后分配动画和行为。
我们可以重用现有的State001作为我们的待机状态。
在脚本窗口中,选择State001。
在检查器中,将标题从“State001”更改为待机 (Idle)。
在要分配的动画 > 动画选择下,点击空白字段并选择待机 (Idle)。
移动状态需要作为一个新状态来创建。
右键单击待机状态右侧的空白区域。
从菜单中选择添加状态。
将出现一个新的“State001”。将标题重命名为移动 (Move)。
在动画类别下,选择移动 (Move)。
跳跃状态既需要动画,也需要跳跃动作。
在待机和移动状态下方创建一个新状态。
如前所述,将标题重命名为跳跃 (Jump),并将动画设置为跳跃 (Jump)。
展开动作设置部分。
勾选跳跃 (Jump) 复选框。
现在,当角色进入跳跃状态时,它将自动执行跳跃动作。
基于玩家输入的移动已经由我们在MoveAndJumpSettings中设置的按键绑定处理。
此系统适用于所有状态,因此移动状态不需要任何额外的移动动作设置。
至此,您已设置好三个核心状态——待机、移动和跳跃,并准备好驱动角色的行为。
现在我们已经创建了三个状态,让我们用链接将它们连接起来,以便玩家可以在它们之间平滑过渡。
对于这个游戏,基本逻辑如下:
如果按下左/右输入 → 移动
如果按下跳跃输入 → 跳跃
如果没有输入 → 空闲
这意味着:
空闲 → 移动 如果按下左/右键,移动 → 空闲 如果没有输入。
空闲 → 跳跃 如果按下跳跃键,移动 → 跳跃 如果在移动时按下跳跃键。
跳跃 → 空闲 当接触地面时(当向下与瓦片碰撞时)。
我们是否还需要一个 跳跃 → 移动 的链接?
不一定。当在按住移动键时落地,从空闲到移动的过渡会立即发生,因此不需要直接的跳跃到移动链接。
右键点击 空闲 状态并选择 添加链接。
将线从空闲拖动到 移动 状态。
现在空闲和移动已连接。
接下来,我们将添加条件:如果按下左/右键,则进入移动状态。
选择新链接。在检查器中,勾选 “触发于输入”。
展开新的 输入操作列表 (Array[InputCondition])。
点击 + 添加输入。
将出现一个新的 <empty> 槽位。点击它并选择 新建输入条件。
<empty> 变为 输入条件。点击以展开它。
按如下方式设置字段:
输入目标:四个任意输入键
上键:无
下键:无
左键:左
右键:右
输入方式:被按下
现在,当按住左或右键时,角色将从 空闲 → 移动。
接下来,让我们创建 移动 → 空闲 的链接。右键点击 移动 并选择 添加链接。
选择新链接。
在检查器中,勾选 “触发于无输入”。
此时,玩家应该能够在地面上左右行走。
让我们将玩家场景放入 stage1.tscn 并进行测试。
将编辑器视图从 脚本 切换到 2D。
保存玩家场景:右键点击 玩家标签 并选择 保存场景。
切换到 stage1.tscn 标签。
在场景面板中,选择 基础 (TileMapLayer)。
从文件系统拖动 player.tscn 到场景中,将其放置在地面上。
确保玩家显示为 BaseLayer 的子节点。
如果它在错误的图层中,请在场景面板中拖动它以修复。
如果其位置看起来不对,请使用 移动模式 进行调整。
点击右上角的 运行项目 (F5) 按钮。
如果一切正确,角色应该:
按下左/右键时行走
释放按键时停止
玩家不移动 → 检查 MoveAndJumpSettings 是否分配了正确的输入键。
玩家移动但动画未改变 → 检查空闲 → 移动链接以及移动状态的动画设置。
玩家不返回空闲 → 检查移动 → 空闲链接条件是否正确。
错误:CameraTargetSettings 中未设置 ID。
此警告表示 CameraTargetSettings 存在但未配置。
由于我们将在 第 4 章 中设置相机跟踪,因此现在可以安全地忽略此错误。
现在让我们将跳跃与其他状态连接起来。
切换回 玩家 标签并将编辑器设置为 脚本视图。

右键点击 空闲,添加链接,并将其连接到 跳跃。
选择链接并启用 “触发于输入”。
展开输入列表 → + 添加输入 → → 新建输入条件。
配置如下:
输入目标:注册键
输入键:跳跃
条件:瞬间按下
现在,在空闲时按下跳跃键将过渡到跳跃状态。
接下来,我们将链接 移动 → 跳跃。
右键点击空闲 → 跳跃链接并选择 复制。
右键点击 移动 状态并选择 粘贴链接。
将新线从移动拖动到跳跃。
选择移动 → 跳跃链接并确认其设置正确(按下跳跃键)。
右键点击 跳跃 状态,添加链接,并将其连接到 空闲。
由于这不是基于输入的,请打开检查器并点击 + 添加条件。
将弹出一个窗口。选择 ContactWithTile。
在条件中,设置 传入接触方向 → 底部
这意味着:仅当玩家底部接触瓦片(地面)时。
如果链接现在显示此设置,则完成。
点击 运行项目 (F5)。
在空闲或移动时,按下 Z → 玩家应该跳跃。
落地时,玩家应返回空闲状态。
无法跳跃 → 检查空闲 → 跳跃和移动 → 跳跃链接,并确认跳跃状态中已启用跳跃动作。
无法落地 → 检查跳跃 → 空闲链接,并确认已设置“ContactWithTile (底部)”条件。
至此,您的玩家现在可以使用可视化脚本 平滑地空闲、移动和跳跃!