第五章:增强游戏表现力并导出
本章将讲解如何“暂时完善已完成的游戏表现力,使其可在PC上运行”。
思考缺失的表现效果
虽然游戏在功能上已经基本完成,但画面略显单调。如何让游戏更具游戏感呢?
首先,由于缺少背景,这是需要补充的地方。
此外,这是一款击败敌人的游戏,但击败敌人时却没有任何表现效果。就像玩家“被击败”时有相应的表现效果一样,这里也希望能有“击败敌人”的表现效果。
另外,目前还没有声音,希望能添加背景音乐(BGM)和音效。
最后,如果能有标题画面等元素,游戏感会更强。
虽然可以列举出更多令人关注的点,但如果具备上述内容,游戏感应该会大大提升。让我们立即开始制作吧。
创建视差背景。
在 Godot 中,通过使用 Parallax2D 节点可以创建视差背景。视差背景是一种通过改变相对于摄像机的移动速度,使近处物体移动较快、远处物体移动较慢,从而产生深度感的机制。这与当前智能手机待机画面中倾斜时照片会移动的现象原理相同。
在 ACTION GAME MAKER 中,游戏场景的各个图层(Base/Wall/NearView/MiddleView/DistantView)均使用 Parallax2D 创建,从而实现视差背景效果。
请使用以下图片,加载图像并设置视差与循环:
-
将图片保存到 PC 上。由于系统限制,直接下载会自动压缩图片,因此请先点击图片放大后再保存。
-
将保存在 PC 上的 mountain.png 拖放到文件系统中。
-
在场景标签页中选择 stage1,并将编辑器画面切换为 2D 模式。
-
在场景窗口中选择 MiddleView(Parallax2D) 图层中的 Sprite2D 节点。
-
将 mountain.png 拖放到检查器的纹理属性中应用。
-
在场景窗口中选择 MiddleView(Parallax2D) 图层。
-
将检查器中的 ScrollScale 设置为 x=0.7, y=0.7。这样,当摄像机和玩家移动 1 个单位距离时,该背景仅移动 0.7 个单位。
-
接着,点击检查器中的“重复”选项以展开设置。
-
按以下方式设置:
Repeat Size: x=1080
Repeat Times: 10
这样,mountain.png 的宽度 1080px 将重复排列,总共重复 10 次。
- 进行测试运行。如果设置正确,山峦应相对于玩家缓慢移动,从而产生深度感。
如果遇到问题,请检查以下清单:
背景循环效果异常:请检查 MiddleView(Parallax2D) 的重复设置。
背景速度似乎未发生变化:请检查 MiddleView(Parallax2D) 的 Scroll Scale 设置是否正确。
为敌人添加“被击倒”状态
应该可以使用与玩家相同的方法。在“消失”状态中添加“显示被击倒粒子效果”。
如果直接添加,粒子效果显示的同时敌人也会消失,导致粒子效果也随之消失。因此,通过“插入等待”来保持显示时间。
然而,这里存在两个问题:在“自身消失”执行之前,敌人角色会继续保持移动,导致出现“虽然被击倒却仍在移动且仍有攻击判定”的状态。
关于第一个问题“移动”,是因为设置了“模板移动”动作。可以通过在“模板移动”动作中设置“停止”,或者将状态中的移动速度设置为0来使其无法移动。本次我们将尝试采用后者的设置方法。
第二个问题是需要“禁用攻击判定”。这可以通过“更改属性”动作,将“AttackCollision”的“Disabled”属性设置为有效来实现禁用。这是因为“更改属性”动作除了变量和开关外,还具有更改可在检查器中设置的项目的功能。
那么,让我们立即开始设置吧。
添加“显示粒子效果”
-
将场景标签切换为 enemy,将编辑器画面切换为 Script。
-
选择“消失”状态,点击“+添加执行动作”。
-
选择“显示粒子效果”动作。
-
在粒子对象路径中选择“被击倒粒子.tscn”并添加。
添加“等待”
-
继续添加执行动作,选择“插入等待”。
-
粒子效果的显示时间为1秒,因此等待时间设为1秒也没有问题,直接点击添加即可。
在此状态中将移动速度设为0
-
接下来,将移动速度设为0。请展开检查器中的“动作设置”。
-
找到“更改左右移动速度(%)”这一项,将其从100改为0。这样,在此状态中移动速度将变为0%。
通过“更改属性”禁用碰撞判定
-
取消碰撞判定。再次点击“+添加执行动作”按钮。
-
选择“更改属性”动作,并按如下方式进行设置:
目标对象类型:对象属性
目标类型:自身
更改目标节点名称:AttackCollision
Target Object Name:disabled
常量值:开
这样,“AttackCollision”的“disabled(禁用)”属性将被启用。
- 由于顺序排在“自身消失”之后,请拖动三条线图标调整顺序,使其变为:
① “显示粒子效果”
② “更改属性(碰撞判定)”
③ “更改属性(剩余敌人数量)”
④ “插入等待”
⑤ “使自身消失”
通过测试游玩确认动作
让我们通过测试游玩来确认动作。
请检查以下内容:
-
击败敌人后是否出现特效
-
确认在击败敌人后撞击其身体不会受到伤害
无法正常运行时的检查清单
- 既没有特效也立即消失:请确认顺序是否正确,“自身消失”是否排在最后。
- 撞击被击败的敌人仍会受到伤害:请确认在“更改属性”中是否正确启用了 AttackCollision 的 disabled 属性。
加入“声音”:在 ACTION GAME MAKER 中管理声音
接下来是“声音”的设置。首先,让我们思考一下需要哪些“声音”。
“BGM(背景音乐)”方面,大概需要两个:一个是关卡的 BGM,另一个是稍后制作的标题画面的 BGM。
“SE(音效)”似乎需要多个,因此请按对象分别考虑。
对于玩家,大概需要以下四种声音:“跳跃音效”、“子弹发射音效”、“受到伤害时的音效”以及“被击败时的音效”。
对于敌人,似乎需要“受到伤害时的音效”和“被击败时的音效”。
此外,在关卡通关时也需要声音,因此在“剩余敌人数量管理”中也需要“关卡通关音效”。
综上所述,我们需要 2 个 BGM 和 7 个 SE。
在 ACTION GAME MAKER 中管理声音
在 ACTION GAME MAKER 中,我们使用专用的“声音数据库”来管理声音。已注册到“声音数据库”中的 BGM/SE 可以通过视觉脚本中的动作“播放声音”进行播放。
因此,首先请将数据注册到声音数据库中。
向声音数据库注册声音
请准备以下两种 BGM 和七种 SE 的数据。这些文件已压缩为 Zip 格式,请先解压并加载到文件系统中。之后将其注册到声音数据库。此时,可以使用将指定文件夹中的音源批量导入的功能。
sounds.zip (1.4 MB)
- 将 sounds.zip 保存到电脑。
- 解压 sounds.zip(选择“全部展开”)。
- 将解压后的 sounds 文件夹通过拖放方式加载到文件系统中。
- 如果 res:// 目录下直接存在 sounds 文件夹,且其中包含 bgm 文件夹和 se 文件夹,则表示成功。如果由于解压软件的问题导致出现 res://sounds/sounds/bgm 等结构(即 sounds 文件夹内又嵌套了 sounds 文件夹),请在文件系统中拖动文件夹,使其达到下图所示的状态。
- 点击左上角的“数据库”按钮。
- 弹出“数据管理”窗口后,切换到“声音数据库”标签页。
- 点击窗口左上角的“批量设置”按钮。如果如下所示注册了 9 个声音数据,则表示成功。“批量设置”按钮会自动注册指定文件夹(res://sound/bgm, res://sound/se)中的音源数据。
遇到问题时的检查清单
请确认 sounds 文件夹的位置是否正确,是否直接位于 res:// 目录下,而没有嵌套在其他文件夹中。
为玩家设置音效。
现在让我们开始为玩家设置音效。首先从玩家开始。我们将为各个状态添加“跳跃音效”、“射击音效”、“受到伤害时的音效”以及“被击败时的音效”。
为“跳跃”状态添加音效。
- 将场景标签切换到 player,将编辑器画面切换到 Script。
- 选择“跳跃”状态。
- 在检查器中点击“+添加执行动作”。
- 选择“播放声音”动作。
- 在声音数据中选择“se_player_jump(se_player_jump.ogg)",然后点击“添加”。
- 尝试测试运行。如果设置正确,按下 Z 键跳跃时应该会播放音效。
为“地面射击”、“空中射击”、“移动射击”添加“播放声音”动作。
接下来添加射击音效。射击状态共有三个,我们将逐一进行设置。
- 选择“地面射击”状态。
- 在检查器中选择“+添加执行动作”。
- 选择执行动作“播放声音”。
- 在声音数据中设置“se_player_shot(se_player_shot.ogg)",然后点击“添加”。
- 虽然可以重复上述操作,但执行动作也可以进行复制/粘贴,因此让我们尝试使用复制/粘贴功能。
- 右键点击刚才添加的“播放声音”动作,选择“复制”。
- 选择“移动射击”状态。
- 将检查器中执行动作栏的大小从 1 更改为 2。此项目用于设置执行动作的数量。
- 会出现一个名为“<空>"的项目,右键点击它并选择“粘贴”。
- 如果“播放声音”动作按如下方式粘贴成功,即表示操作正确。
- 选择“空中射击”状态,重复步骤 7 到 10,通过复制/粘贴添加“播放声音”动作。
- 完成后进行测试。在待机、移动或跳跃状态下按下 X 键发射子弹,确认是否播放了相同的音效。
为“受到伤害”状态添加“播放声音”。
接下来是为“受到伤害”状态添加音效。由于“播放声音”的添加步骤相同,此处将省略详细说明。
- 添加“播放声音”动作,并在声音数据中选择“se_player_damage(se_player_damage.ogg)"。
- “受到伤害”状态中已包含等待动作,请拖动“播放声音”的三条横线图标,将其移动到等待动作之前。
- 进行测试运行,检查是否在碰到敌人时播放了音效。
为“被击败”状态添加“播放声音”。
- 选择“被击败”状态,添加“播放声音”动作,并在声音数据中选择“se_player_down(se_player_down.ogg)"。
- 进行测试运行,确认在角色下落或 HP 归零时是否播放了音效。如果播放成功,则玩家的音效设置已完成。
为敌人设置音效
接下来,让我们为“enemy”设置音效。虽然有两种音效:“受到伤害的声音”和“被击败时的声音”,但“enemy”并没有“受到伤害”状态。在这种情况下,我们可以使用 TakenDamageSettings(受到伤害设置)节点,现在就试试看吧。
使用 TakenDamageSettings(受到伤害设置)节点播放音效
- 切换到场景标签页,选择 enemy。
- 在场景窗口中选择 TakenDamageSettings 节点。
- 展开检查器中的“受到伤害数据列表”。
- 点击“+添加受到伤害时的设置”。
- 点击<空>,选择“新建 TakenDamageData”。
- 展开生成的“TakenDamageData”。
- 展开“其他设置”。
- 将“播放声音”设置为“开”,并在“声音数据”中设置“se_enemy_damage”。
- 进行测试运行。如果击中敌人时播放了音效,则说明成功。
为敌人的“消失”状态添加“播放声音”
这部分与之前相同。
- 选择“消失”状态,点击“+添加执行动作”。
- 选择“播放声音”动作,在声音数据中选择“se_enemy_down(se_enemy_down.ogg)”并添加。
- 调整动作顺序,将“播放声音”移动到“添加等待”之前,即可完成设置。
- 进行测试运行。如果击败敌人时播放了音效,则说明成功。
设置关卡背景音乐(BGM)和通关音效(SE)
关于背景音乐(BGM),首先需要预先设置“循环播放”。这可以在“导入”设置中进行调整。
接下来,关于在哪里播放 BGM,建议在始终显示的“剩余敌人管理”对象的“计数”状态中进行播放。
此外,关于关卡通关的音效(SE),似乎也可以在“剩余敌人管理”的“关卡通关”状态中进行设置。
在“导入”设置中让 BGM 循环播放
可以在“文件系统”中选择的素材,通过从“场景窗口”切换标签页显示的“导入”窗口来更改素材设置。
- 在“文件系统”中选择 sounds 文件夹/bgm 文件夹内的 bgm_stage1.ogg。
-
将左上角场景窗口的标签页切换到“导入”。
-
在导入窗口中将“循环”设置为“开”,并点击“重新导入(*)”按钮。
- 会显示正在(重新)导入资源的进度条,自动关闭后即完成。
- 重复步骤 2 至 4 的操作,将另一个 BGM bgm_title.ogg 的循环也启用。
在“剩余敌人管理”的“计数”状态中播放 BGM
BGM 也可以像 SE 一样通过“播放声音”动作来播放,操作方法与之前相同。
-
将场景标签页更改为“剩余敌人管理”。
-
选择“计数”状态,通过“播放声音”动作设置播放 bgm_stage1 并添加。
- 进行测试游玩,尝试确认是否在关卡开始时播放了 BGM。
在“剩余敌人管理”的“关卡通关”状态中播放 SE
选择“关卡通关”状态,通过“播放声音”动作设置播放“se_stageclear”。
设置完成后进行测试游玩,尝试确认是否在击败所有敌人后播放了 SE。
设置“标题画面”
现在让我们设置标题画面。
创建一个作为新游戏场景的标题画面,并在标题画面上进行操作以开始 stage1,这样的形式是合适的。
ACTION GAME MAKER 拥有专用的场景切换(SceneTransition)功能,利用该功能即可完成设置。
那么,让我们创建“标题画面”游戏场景并进行设置,通过“场景切换”将两个场景连接起来。
思考“标题画面”的功能
由于本次是简单的游戏,标题画面应设置为背景显示文字并播放 BGM 的场景,按下跳跃键(Z 键)后开始 stage1。也就是说,可以通过创建新的游戏场景,使用 Sprite2D 在 UI 场景中设置标题背景、显示标题 Logo,并放置用于播放声音的 UI 游戏对象来实现。
与视觉脚本类似,“场景切换”也可以设置为通过特定按键输入来切换场景,因此可以通过该功能设置跳跃切换。
创建“标题画面”用游戏场景
- 打开新的场景标签页,在“创建根节点”中选择“游戏场景”。
- 创建完成后保存场景。由于本次是标题画面,请将其保存为“title_scene.tscn”。
为“标题画面”用游戏场景设置背景
- 标题场景的背景图像请使用以下内容,请右键点击并保存到 PC。
-
从 PC 将 title_bg.png 通过拖放加载到文件系统中。
-
在场景画面中选择“UI”图层。
-
按住“SHIFT 键”,将文件系统中的 title_bg.png 拖放到场景画面中 UI 图层的范围内(蓝线框内)。按住 SHIFT 键拖放时,该文件将作为所选节点(本次为“UI”图层)的子节点进行配置。
- 请确认是否已正确作为 UI 图层的子节点进行配置。如果位置有偏差,请在场景图层中拖动 TitleBg 节点将其调整到正确位置。
-
该背景图像已设置为与摄像机尺寸完全一致,即宽度 1152、高度 648。因此,如果稍有偏差,背景中的灰色部分就会显露出来,请仔细调整位置使其完美对齐。请在场景窗口中选择 TitleBG 节点。
-
展开检查器中的“变换”项目。
-
将位置属性的 x 设为 576,y 设为 324。默认情况下,图像的中心是基准点,因此将其放置在摄像机尺寸(宽度 1152、高度 648)的一半数值处即可完美对齐。
创建用于“标题 Logo”的游戏对象。
-
打开一个新的场景标签页,在“创建根节点:”中选择游戏对象。
-
对象名称:title_logo,使用模板:UI,类型(类)留空,然后创建。
-
创建后,请右键点击未保存(*)以保存场景。名称保持为 title_logo.tscn 即可。
-
右键点击以下图片并保存到 PC。
-
将保存的 title_logo.png 通过拖放方式加载到文件系统。
-
将文件系统中的 title_logo.png 拖放到编辑器界面进行放置。
为“标题 Logo”游戏对象设置可视化脚本。
该对象只需播放 BGM,即只需执行“播放声音”操作即可,因此一个状态和一个操作就足够了。
- 选择 title_logo (GameObject) 节点,点击
+ 按钮附加脚本。
- 保持默认名称进行创建。
- 将状态 001 重命名为“标题”,并点击“+ 添加执行操作”。
-
选择执行操作“播放声音”。
-
在声音数据中选择“bgm_title (bgm_title.ogg)",然后点击“添加”。
在游戏场景 (title_scene) 中放置 title_logo 对象
-
将场景标签页设置为 title_scene,将编辑器界面切换为 2D 模式。
-
选择 UI 图层中的 TitleBG 节点。
-
将文件系统中的 title_logo.tscn 通过拖放方式放置到屏幕上。至此,标题画面的准备工作已完成。如果放置后仍不可见,可能是该对象被放置在背景之后。请确认它是否如以下图片所示,作为 UI 图层的子节点,并位于 TitleBG 的下方(前方)。
从“标题画面”创建到“stage1”的场景切换
现在,让我们开始创建从标题画面到 stage1 的场景切换。
场景切换画面的操作大致与视觉脚本相同。
步骤如下:首先在“场景切换”画面中加载 title.tscn,将初始场景更改为 title.tscn,然后设置从 title.tscn 到 stage1.tscn 的切换条件。
之后,请设置切换的演出效果。
- 将顶部的标签从 2D 切换到 SceneTransition。

- 会出现类似视觉脚本的界面,请将文件系统里的 title_scene.tscn 拖拽到画面中进行加载。
- 将开始场景更改为标题画面。右键点击 title_scene,在菜单中选择“设置为初始场景”。
-
接下来添加链接。右键点击 title_scene,选择“添加链接”,并将其连接到 stage1。
-
展开检查器中的“切换条件”。
-
将“执行以下输入操作”设为开启。
-
在输入操作列表中,依次设置“+添加输入”、“<空>”、“新建 输入相关条件”。
- 展开“输入相关条件”,将输入键设为“跳跃”,输入条件设为“按下瞬间”。
-
接下来是演出设置,请展开“切换前演出”。
-
按如下方式进行设置:
画面演出:向上滑动
BGM 演出:停止
淡出:开启
播放音效:开启
音效:se_enemy_damage(se_enemy_damage.ogg)
这样,当场景切换开始时,标题画面会向上滑动,同时播放敌人受到攻击的音效,BGM 会淡出(逐渐变小)并停止。
-
接下来,展开“切换后演出”。
-
将画面演出设置为“向下滑动”,这样当标题画面向上移动时,stage1 会从上方降下出现。
完成后请尝试测试运行。
如果实现正确,启动测试运行时会出现标题画面,按下 Z 键后演出效果将运行,并切换到 stage1。
无法顺利进行时的检查清单
从 stage1 开始:请检查是否正确将初始场景设置为 title_scene,以及是否在测试运行时使用了“运行项目 (F5)"。
场景切换无法顺利进行:请再次检查从标题到 stage1 的链接条件是否正确设置。
尝试导出游戏
现在,游戏已经基本完成。目前进行的测试游玩,只是通过 ACTION GAME MAKER 执行的,因此如果不进行导出,只有拥有 ACTION GAME MAKER 的人才能游玩。
不过,通过“导出”功能,可以让任何人都能游玩。
让我们尝试导出为 Windows 电脑可用的版本。
- 从菜单的“项目”中选择“导出”。
- 导出窗口打开后,点击“添加”按钮选择 Windows Desktop。(此画面显示了 6 个导出目标,但截至 1.1.0 版本,ACTION GAME MAKER 正式支持的只有 Android、Web 和 Windows Desktop 这 3 个。)
- 首先,指定导出路径。这是输出目标,但默认会在项目的 res:// 目录下创建,因此为了避免与素材混淆,请创建单独的文件夹。
点击导出路径最右侧的
图标。
- 会显示项目的文件夹(文件系统的文件夹),右键点击创建新文件夹。
补充说明
导出目标也可以设置为“文件系统”以外的位置。本次为了清晰起见,我们将其设置在项目内,但实际上建议导出到您自己方便处理的项目外文件夹中。
- 将其命名为 export 并确认。
- 打开创建的 export 文件夹,将文件名保存为 tutorial。(这将成为导出时的可执行文件名。)
- 如果导出路径如下所示,则确认无误。

- 接下来是各种选项设置,但请将"Export Console Wrapper"仅设置为 No。此项目用于决定是否显示调试用的控制台窗口。
-
点击“导出项目”按钮。
-
会出现保存窗口,显示之前指定的文件夹和可执行文件名,直接点击保存即可。
- 会出现如下所示的“打包中”进度条,请稍等片刻。
- 虽然会出现以下警告,但导出已成功完成。这是关于 rcedit(用于保存可执行文件图标、作者名等数据的功能)未能正常执行的警告,但由于本次并未进行相关设置,因此没有问题。
另外,输出窗口中也会显示 ERROR: Could not create child process: rcedit export/tutorial.exe --set-icon… 这样的错误,但内容与上述警告相同,因此无需担心。
测试导出的游戏
-
关闭导出窗口。
-
右键点击文件系统中的 export 文件夹,选择“在文件管理器中打开”。
-
Windows 资源管理器将打开,export 文件夹内应包含 tutorial.exe 和 tutorial.pck 这两个文件。exe 是游戏本体,pck 是包含运行所需素材等的文件。

- 双击 tutorial.exe 启动游戏。
应该会弹出名为 Tutorial(DEBUG) 的窗口,即可开始游玩。
至此,您制作的这款游戏,只要有 Windows PC,任何人都可以游玩。如果想让别人体验,请将 tutorial.exe 和 tutorial.pck 一起发送给他们。
结语
你虽然制作的是一个小游戏,但已经是一位成功完成游戏的优秀游戏创作者了!
恭喜!
如果你想在这个游戏中添加二段跳、实现蹬墙跳、加入滑铲、加入蓄力射击、添加武器切换、加入Boss战……等等,仅在这个游戏中就有许多想做的事情,你可能还想尝试制作其他类型的游戏。
从现在开始,动手制作你想做的东西吧!
虽然可能会觉得有些困难,但通过本教程,你已经学习了游戏的基础知识,并从概念上深入掌握了ACTION GAME MAKER。只要发挥创意,你一定能制作出各种各样的游戏。
只要具备“将这种动作与这种条件组合起来,就能实现这样的效果”这样的创意能力,就完全没问题。
如果一时想不出主意,或遇到困难,可以在RPG Maker Guild中搜索,或前往官方Discord提问。
在RPG Maker Guild中,可以通过右上角的搜索栏输入文字进行搜索。
这是为交流而设立的官方Discord频道:
https://discord.gg/vfaV86vYd9