第 5 章:提升演出效果并导出游戏
在本章中,我们将学习如何 打磨已经完成的游戏表现,并最终让它可以在 PC 上游玩。
思考:现在的游戏还缺少什么?
虽然目前游戏在功能上已经完成,但画面表现仍然略显单调。
为了让它更像一个“真正的游戏”,我们还可以加入哪些要素呢?
-
首先,没有背景,因此加入背景会让画面更有层次感。
-
这是一个“击败敌人”的游戏,所以在敌人被击败时,也应该有击破演出效果,就像玩家的“死亡效果”那样。
-
目前完全没有声音,因此我们需要加入 BGM 和音效。
-
最后,如果有一个 标题画面(Title Screen),整体完成度会大幅提升。
当然,还可以加入更多细节来进一步打磨作品,但只要具备以上这些要素,
游戏就已经会非常接近一个完整的成品了。
那么,就让我们从这里开始,一步步完成它吧!
创建视差背景(Parallax Background)
在 Godot 中,可以使用 Parallax2D 节点来创建 视差背景。
视差背景通过让近处的物体移动得更快、远处的物体移动得更慢,从而营造出空间深度感。
你可能在智能手机的锁屏画面中见过类似效果:当你倾斜手机时,背景图像会产生轻微的位移,看起来更有立体感。
在 ACTION GAME MAKER 中,每一个游戏场景层
(Base / Wall / NearView / MiddleView / DistantView)
都是基于 Parallax2D 构建的,因此可以非常方便地制作视差背景。
本节我们将使用下面这张图片,将其导入项目,并设置视差与循环效果。
操作步骤
-
将下方图片保存到你的电脑中。
由于系统限制,如果直接下载,图片会被压缩。
请 先点击图片放大后再保存。
-
将保存好的 mountain.png 拖拽到编辑器的 FileSystem 中。
-
切换到 stage1 场景标签页,并将编辑器视图切换为 2D。
-
在 Scene 面板中,选择 MiddleView(Parallax2D) 层下的 Sprite2D 节点。
-
在 Inspector 中,将 mountain.png 拖拽到 Texture 属性中。
-
接着,在 Scene 面板中选中 MiddleView(Parallax2D) 节点本身。
-
在 Inspector 中,将 Scroll Scale 设置为:
- 这样一来,当摄像机和玩家移动 1 个单位时,背景只会移动 0.7 个单位,从而产生景深效果。
-
接下来,展开 Inspector 中的 Repeat(重复)设置。
-
设置以下数值:
- Repeat Size:x = 1080
- Repeat Times:10
这表示宽度为 1080px 的 mountain.png 会在水平方向 连续重复 10 次。
-
运行测试(Test Play)。
如果设置正确,你会看到山脉背景的移动速度比玩家慢,从而产生明显的空间深度感。
常见问题排查
为敌人添加死亡特效(Death Effect)
我们可以使用与玩家相同的方法,为敌人添加“死亡粒子”效果。
具体来说,就是在敌人的 Vanish 状态中显示 Death Particle。
不过,如果只是简单地添加粒子显示,敌人会在粒子出现的同一时间被移除,
结果就是 粒子也会立刻消失。
为了解决这个问题,我们需要在移除敌人之前,使用 Wait 动作让粒子显示一段时间。
另外,这里还有两个需要解决的问题:
- 在执行 Vanish 之前,敌人仍然会继续移动,看起来像是还活着,并且攻击判定仍然存在
- 在死亡演出期间,需要禁用敌人的 攻击碰撞(AttackCollision)
对应的解决方案是:
下面按步骤进行设置。
添加 “DisplayParticle”
-
打开 enemy 场景,并将编辑器切换到 Script 视图。
-
选择 Vanish 状态,点击 + Add Executable Action。
-
选择 DisplayParticle。
-
在粒子对象路径中选择 death_particle.tscn,然后点击 Add。
添加 “Wait”
-
再次添加一个执行动作,选择 Wait。
-
由于粒子显示时间为 1 秒,将等待时间设置为 1.0 秒,然后点击 Add。
在该状态中将移动速度设为 0
-
在 Inspector 中展开 Action Settings。
-
将 Horizontal Speed Multiplier 的值从 100 改为 0。
使用 “Change Property” 禁用攻击碰撞
-
再添加一个执行动作。
-
选择 ChangeObjectProperty,并按以下方式设置:
- Target Object Type:Object Property
- Target Type:Self
- Target Node Name:AttackCollision
- Target Object Name:disabled
- Constant Value:On
这会启用 AttackCollision 节点的 Disabled 属性。
调整执行顺序
请确认执行动作的顺序正确。
使用三条横线的拖拽图标,将顺序调整为:
- DisplayParticle
- ChangeObjectProperty(禁用 AttackCollision)
- ChangeObjectProperty(减少 Remaining Enemies)
- Wait
- RemoveSelf
测试行为
运行测试,确认以下内容:
- 击败敌人时,会正确显示粒子特效
- 敌人被击败后,与其碰撞不再对玩家造成伤害
常见问题排查
添加音效:ACTION GAME MAKER 中的音频管理
接下来,让我们来设置 音效系统。
首先,需要整理一下游戏中 需要哪些声音。
需要哪些声音?
BGM(背景音乐)
至少需要两首:
SE(音效)
根据对象不同,需要以下音效:
-
玩家(Player)
-
敌人(Enemy)
-
关卡通关(Stage Clear)
- 通关音效(由 Remaining Enemies Manager 触发)
音效总数
合计 9 个音频文件。
ACTION GAME MAKER 的音频管理方式
在 ACTION GAME MAKER 中,所有音效都通过一个专用的 Sound Database(音频数据库) 来管理。
注册到 Sound Database 中的 BGM 和 SE,都可以在 Visual Script 中通过 PlayAudio 动作来播放。
因此,第一步就是:
将音频文件注册到 Sound Database 中。
将音效注册到 Sound Database
本教程使用已经准备好的音效集合,包含:
它们都打包在 sounds.zip 文件中,并已经按文件夹分类。
sounds.zip(1.4 MB)
操作步骤
-
将 sounds.zip 保存到本地电脑。
-
解压 zip 文件。
-
将解压后的 sounds 文件夹拖拽到编辑器的 FileSystem 面板中。
-
确认文件夹结构如下:
为玩家添加 SE(音效)
接下来开始设置 SE(音效),首先从 玩家(Player) 开始。
我们将为玩家的以下状态分别添加音效:
- Jump(跳跃)
- Shot(射击)
- Take Damage(受伤)
- Death(被击败)
为 “Jump” 状态添加音效
-
将场景切换到 player,并把编辑器视图切换为 Script。
-
选择 Jump 状态。
-
在 Inspector 中点击 + Add Executable Action。
-
选择 PlayAudio 动作。
-
在 Audio Data ID 中选择
se_player_jump(se_player_jump.ogg),然后点击 Add。
-
运行测试。
如果设置正确,按下 Z 键跳跃时,就会播放跳跃音效。
为 “Ground Shot / Moving Shot / Air Shot” 添加射击音效
接下来添加 射击音效。
由于射击有 三个状态,我们需要为每个状态添加同样的音效。
给 Ground Shot 添加音效
-
选择 Ground Shot 状态。
-
在 Inspector 中点击 + Add Execution Action。
-
选择 PlayAudio。
-
将音频设置为
se_player_shot(se_player_shot.ogg),然后点击 Add。
复制并粘贴到其他射击状态
执行动作可以 复制 / 粘贴,不用重复设置。
-
右键刚刚添加的 PlayAudio 动作,选择 Copy。
-
选择 Moving Shot 状态。
-
在 Inspector 中,将 Execution Actions 的大小从 1 改为 2。
-
新出现的 <empty> 项上右键 → Paste。
-
如果 PlayAudio 动作出现,说明粘贴成功。
-
对 Air Shot 状态重复步骤 6–8。
-
运行测试。
在 站立 / 移动 / 跳跃 时按 X 键射击,都应播放同样的射击音效。
为 “Take Damage” 状态添加音效
接下来为 受伤状态 添加音效。流程与前面相同,这里简要说明:
-
在 Take Damage 状态中添加一个 PlayAudio 动作。
-
音频选择
se_player_damage(se_player_damage.ogg)。
-
该状态中已经有 Wait 动作,
请将 PlayAudio 拖到 Wait 之前,确保音效立刻播放。
-
运行测试。
当玩家与敌人碰撞并受伤时,应播放受伤音效。
为 “Death” 状态添加音效
最后,为玩家被击败时添加音效。
-
选择 Death 状态。
-
添加一个 PlayAudio 动作。
-
选择音频
se_player_down(se_player_down.ogg)。
-
运行测试。
当玩家掉入坑中或 HP 归零时,应播放被击败音效。
至此,玩家相关的所有音效(SE)已经全部设置完成。
为敌人添加 SE(音效)
接下来为 敌人(Enemy) 设置音效。
敌人需要的音效只有两种:
- 受伤音效(Damage SE)
- 被击败音效(Defeat SE)
不过,与玩家不同的是,敌人并没有专门的 Damage 状态。
在这种情况下,可以使用 TakenDamageSettings 节点,在敌人受到伤害时直接播放音效。
使用 TakenDamageSettings 节点播放受伤音效(Damage SE)
-
将场景切换到 enemy。
-
在 Scene 窗口中,选择 TakenDamageSettings 节点。
-
在 Inspector 中展开 Damage Taken Data List。
-
点击 + Add Damage Taken Setting。
-
点击 <empty>,选择 New TakenDamageData。
-
展开新创建的 TakenDamageData。
-
展开 Other Settings。
-
将 Play Sound 设为 On,并在 Audio Data ID 中选择
se_enemy_damage。
-
运行测试。
如果设置正确,当子弹击中敌人时,就会播放敌人的受伤音效。
在敌人的 “Vanish” 状态中添加被击败音效(Defeat SE)
接下来,为敌人被击败时添加音效。
这一步与玩家的处理方式相同,直接在 Vanish 状态中播放音效即可。
-
选择敌人的 Vanish 状态。
-
点击 + Add Executable Action。
-
选择 PlayAudio,并将音频设置为
se_enemy_down(se_enemy_down.ogg)。
-
调整执行顺序,使 PlayAudio 位于 Wait 动作之前。
-
运行测试。
如果设置正确,当敌人被击败时,将会播放被击败音效。
至此,敌人的 受伤音效(Damage SE) 和 被击败音效(Defeat SE) 都已经正确设置完成。
设置关卡 BGM 与通关 SE
在设置 BGM 时,第一步是先在 Import(导入)设置 中启用 循环播放(Loop)。
完成后,最适合播放关卡 BGM 的位置是始终存在的 UI 对象
—— Remaining Enemies Manager 的 “Count” 状态。
至于 关卡通关音效(Stage Clear SE),则可以在同一个对象的
“Stage Clear” 状态中进行设置。
在 Import 设置中启用 BGM 循环播放
在 FileSystem 中选中资源后,可以通过 Import 选项卡(位于 Scene 旁边)
修改资源的导入设置。
-
在 FileSystem 中进入 sounds/bgm 文件夹,选中 bgm_stage1.ogg。
-
将 Scene 面板上方的标签切换到 Import。
-
在 Import 面板中,启用 Loop,然后点击 Reimport(重新导入)。
-
当 “Reimporting asset” 的进度条结束并消失后,设置即完成。
-
对 bgm_title.ogg 重复步骤 2–4,
确保两个 BGM 都能正确循环播放。
在 “Count” 状态中播放关卡 BGM
BGM 与 SE 一样,都是通过 PlayAudio 动作播放的,因此流程完全相同。
-
将场景切换到 Remaining Enemies Manager。

-
选择 Count 状态。
-
添加一个 PlayAudio 执行动作,
并将音频数据设置为 bgm_stage1。
-
运行测试,确认在关卡开始时 BGM 会自动播放。
在 “Stage Clear” 状态中播放通关 SE
-
选择 Stage Clear 状态。
-
添加一个 PlayAudio 动作,
并将音效数据设置为 se_stageclear。
-
运行测试,确认在所有敌人被击败后,
会播放关卡通关音效。
如果出现问题的检查清单:
-
确认 sounds 文件夹是否直接位于 res:// 下,
而不是被嵌套在其他文件夹中。
-
确认 BGM 的 Loop 已启用,并且已经执行 Reimport。
-
确认 PlayAudio 动作是否放在正确的状态中:
- 关卡 BGM →
Count
- 通关 SE →
Stage Clear
设置标题画面(Title Screen)
现在我们来创建并配置标题画面。
标题画面将作为一个**新的 Game Scene(游戏场景)**来制作,
并且在该画面中 按下按钮后切换到 stage1。
ACTION GAME MAKER 提供了专用的 SceneTransition(场景切换) 功能,
可以非常方便地实现这一流程。
因此,我们将创建一个 标题画面场景,
并通过 SceneTransition 将其与 stage1 连接起来。
标题画面的构成规划
由于这是一个简单的游戏,标题画面只需要包含以下元素即可:
- 一张 背景图片
- 一个 标题 Logo
- 播放中的 BGM
- 按下 Jump(Z 键) 后切换到 stage1
实现方式上,我们将:
- 创建一个新的 Game Scene
- 在 UI 层 中使用 Sprite2D 放置背景
- 添加一个 UI 用的 Game Object 来显示标题并播放声音
和 Visual Script 类似,SceneTransition 也可以设置
“由特定按键触发的场景切换”,
这正是我们用来处理 Z 键进入游戏 的方式。
创建标题画面的 Game Scene
-
打开一个 新的场景标签页。
-
在创建根节点时,选择 Game Scene。
-
立刻将场景保存为 title_scene.tscn。
为标题画面添加背景
-
使用准备好的标题画面背景图片
(右键图片并保存到本地)。
-
将 title_bg.png 拖入编辑器的 FileSystem 中进行导入。
-
在 Scene 面板中,选中 UI 层。
-
从 FileSystem 中拖动 title_bg.png 到编辑器视图,
并在拖动时 按住 SHIFT 键。
- 按住 SHIFT 可以确保图片被作为
当前选中节点(这里是 UI 层)的子节点添加。
-
确认背景节点已经正确成为 UI 层的子节点。
- 如果位置不对,可以在 Scene 树中手动拖拽
TitleBG 节点到正确的位置。
-
这张背景图片的尺寸正好等于摄像机视野:
宽 1152 × 高 648。
- 如果位置不正确,灰色背景就会露出来,
因此我们需要精确对齐。
-
选中 TitleBG 节点,在 Inspector 中展开 Transform。
-
将位置设置为:
- Position X = 576
- Position Y = 324
- 由于 Sprite2D 的原点在图像中心,
将其放在画面宽高的一半位置,
就可以与摄像机画面完美对齐。
到这里为止,标题画面的背景已经干净、准确地完成布置。
创建「Title Logo」游戏对象
接下来,我们来创建标题画面中的 标题 Logo 对象。
这个对象将负责显示标题图片,并在标题画面中播放 标题 BGM。
创建 Title Logo 的 Game Object
-
打开一个 新的场景标签页。
-
在 Create Root Node 中选择 Game Object。
-
按如下方式设置:
- Object Name:
title_logo
- Use Template:
UI
- Type:
Empty
然后点击 Create。
-
右键点击 Unsaved 标签,将场景保存为 title_logo.tscn。
设置标题 Logo 图片
-
右键保存下方的标题 Logo 图片到本地。
-
将 title_logo.png 拖入编辑器的 FileSystem 中进行导入。
-
从 FileSystem 中,将 title_logo.png 拖入编辑器视图中。
- 一个 Sprite2D 节点会被自动创建,并且贴图会自动设置完成。
为 Title Logo 添加 Visual Script
这个对象的作用非常简单:
只需要在标题画面中播放 BGM,因此只需要 一个状态 + 一个执行动作 即可。
-
在 Scene 面板中,选中 title_logo(GameObject) 节点。
-
点击
+(Attach Script)。
-
保持默认文件名,点击 Create。
-
将默认的 State001 重命名为 Title。
-
点击 + Add Executable Action。
-
选择 Play Audio。
-
在 Audio Data 中选择 bgm_title(bgm_title.ogg),然后点击 Add。
- 这样,当标题画面加载时,标题 BGM 就会自动开始播放。
将 title_logo 放入标题场景(title_scene)
-
切换到 title_scene 场景标签页,并将编辑器模式设为 2D。
-
在 Scene 面板中,选中 UI 层 下的 TitleBG 节点。
-
从 FileSystem 中,将 title_logo.tscn 拖入场景中进行放置。
-
如果没有看到标题 Logo,可能是被背景遮挡了。
- 请在 Scene 树中确认:
title_logo 是 UI 层的子节点
- 并且 位于 TitleBG 之下(显示在前方)
结构应类似参考图所示。
从标题画面切换到 Stage1 的场景跳转设置
现在,我们来设置 从标题画面跳转到 stage1 的场景切换。
Scene Transition 编辑器 的使用方式与 Visual Script 编辑器 非常相似。
整体流程如下:
- 将 title_scene.tscn 加载到 Scene Transition 编辑器中
- 将 title_scene.tscn 设置为初始场景
- 定义从 title_scene.tscn → stage1.tscn 的切换条件
- 设置切换时的演出效果
操作步骤
-
将编辑器上方的标签从 2D 切换到 SceneTransition。

-
在类似 Visual Script 的编辑区域中,从 FileSystem 将 title_scene.tscn 拖拽到工作区。
-
右键点击 title_scene,在菜单中选择 Set Start Scene(设置为起始场景)。
-
接下来添加连接(Link):
- 右键点击 title_scene
- 选择 Add Link
- 将连线连接到 stage1
-
在 Inspector 中展开 Switching Conditions(切换条件)。
-
勾选 Trigger On Input(输入触发)。
-
在 Input Operation List 中:
- 点击 + Add Input
- 选择
- 然后选择 New Input Condition
-
展开新建的 Input Condition,并设置:
- Input Key:Jump
- Input Condition:Moment Pressed(按下瞬间)
切换前效果(Before the Switch Effects)
-
展开 Before the Switch Effects。
-
设置如下参数:
- Transition Type:Slide_Up
- BGM Setting:Stop
- Is Fade Out:On
- Play SE:On
- SE:se_enemy_damage(se_enemy_damage.ogg)
这样设置后,当场景切换开始时:
- 标题画面会向上滑出
- 播放一次“敌人受伤”的 SE
- 当前 BGM 会淡出并停止
切换后效果(After the Switch Effects)
-
展开 After the Switch Effects。
-
将 Transition Type 设置为 Slide Down。
- 这样,stage1 会从上方滑入画面,与标题画面向上滑出的动作形成连贯演出。
测试场景切换
运行测试(Run Project / F5)。
如果设置正确:
- 游戏将从 标题画面 开始
- 按下 Z 键(Jump)
- 播放切换演出并进入 stage1
常见问题排查
导出游戏(Export)
至此,游戏已经完成了。
到目前为止,我们只能通过 ACTION GAME MAKER 进行测试游玩,这意味着只有安装了 ACTION GAME MAKER 的人才能运行这个游戏。
但是,通过使用 Export(导出) 功能,我们可以将游戏导出为独立可执行文件,让任何人都能直接游玩。
这一次,我们以 Windows PC 为例来进行导出。
导出游戏
-
在菜单栏中选择 Project → Export。
-
Export 窗口会打开。点击 Add 按钮,选择 Windows Desktop。
(本例中显示了 6 种导出平台,但截至 ACTION GAME MAKER v1.1.0,官方正式支持的平台只有 Android / Web / Windows Desktop。)
-
接下来指定导出路径。
默认情况下,构建文件会直接生成在 res:// 下,这样会和项目资源混在一起。
因此我们先创建一个单独的文件夹。
点击导出路径右侧的
图标。
-
会打开项目文件夹(与 FileSystem 中看到的是同一个)。
在空白处右键,选择 New Folder(新建文件夹)。
说明:
实际上,导出路径也可以设置在项目文件夹之外。
这里为了方便说明,将其放在项目内部;在正式开发中,可以根据需要选择更合适的位置。
-
将新建文件夹命名为 export,然后点击 OK。
-
在 export 文件夹中,将文件名保存为 tutorial。
(这将成为最终生成的可执行文件名。)
-
确认导出路径最终显示为:res://export/tutorial.exe
-
接下来设置导出选项。
将 Export Console Wrapper 设置为 No。
(该选项用于决定是否在启动游戏时显示调试用的控制台窗口。)
-
点击 Export Project 按钮。
-
会弹出一个保存窗口,内容与刚才设置的路径和文件名一致,直接点击 Save 即可。
-
界面上会显示 “Packing…” 的进度条,请稍等片刻,直到导出完成。
-
导出完成后,可能会看到如下警告信息:
这是因为用于设置可执行文件元信息(如图标、作者名等)的工具 rcedit 未能运行。
由于本教程中并未配置这些项目,该警告可以完全忽略。
在输出日志中,也可能看到类似以下错误信息:
ERROR: Could not create child process: rcedit export/tutorial.exe --set-icon ...
同样可以忽略,不会影响游戏运行。
测试导出的游戏
-
关闭 Export 窗口。
-
在 FileSystem 中右键点击 export 文件夹,选择 Open in File Manager。
-
Windows 资源管理器会打开,你应该能看到两个文件:
- 双击 tutorial.exe 启动游戏。
会出现标题为 Tutorial (DEBUG) 的窗口,你就可以直接游玩这个游戏了。
现在,你的游戏已经可以在 任何 Windows PC 上独立运行,不再需要安装 ACTION GAME MAKER。
如果你想把游戏分享给别人,只需将:
tutorial.exe
tutorial.pck
这两个文件一起分发即可。
结语
你做到了 —— 现在你已经是一名游戏制作者了!
这也许是一个小小的游戏,但你已经成功地从零开始,完整地完成了一个游戏项目。
恭喜你! 
当然,你还可以继续加入更多内容,例如:
- 二段跳
- 踢墙跳
- 滑行
- 蓄力射击
- 武器切换
- Boss 战……
即便只围绕这个游戏本身,也还有无数可以尝试的点子。
而此刻,你或许已经开始思考:要不要尝试制作完全不同类型的游戏呢?
从现在开始,就轮到你去创造你真正想做的东西了。
在制作过程中,有时可能会感到困难或卡关,但通过本教程,你已经掌握了游戏开发的基础知识,以及 ACTION GAME MAKER 的核心思维方式。
只要运用你现在拥有的知识,再加上一点想象力,你就能够制作出各种各样的游戏。
只要你能想到:
“如果把这个动作和这个条件组合起来,也许就能实现……”
那你就已经走在正确的道路上了。
如果有一天你感到迷茫,或者暂时想不到新的点子,不妨去 RPG Maker Guild 搜索相关话题,或者在官方 Discord 社区中提问交流。
你可以使用 RPG Maker Guild 页面右上角的搜索栏来查找内容。
官方 Discord 社区(交流 / 提问):
ACTION GAME MAKER OFFICIAL