- 前言:
- 我是根据b站上的视频进行学习,并且总结写下笔记,然后做此分享。笔记非常详细以至于你可以通过查看文章进行快速学习并且制作出游戏出来。当然视频学习的链接我也放在下面了:
- 视频学习:https://www.bilibili.com/video/BV1fuCrYFEoG?spm_id_from=333.788.videopod.sections\&vd_source=078d5d025b9cb472d70d8fda1a7dc5a6
- 制作完成的成果,可以点击进去进行在线游玩:https://yunbiansanbu.itch.io/my-frist
- 音频/美术资源包下载:https://pan.quark.cn/s/570e6714e5ea
- 完成目标
-
本阶段主要完善游戏的音效与音乐系统。首先在玩家场景中添加
AudioStreamPlayer 节点,实现子弹发射音效与游戏失败音效,并在对应的发射子弹函数与 game_over 函数中触发播放。随后为玩家跑步添加循环音效,通过在音频资源中启用循环并重新导入,在脚本中根据玩家移动状态控制播放与停止,确保仅在移动且游戏未结束时播放。 -
接着为史莱姆添加死亡音效:在史莱姆场景中加入音频节点并在子弹命中回调中播放。同时修复逻辑问题,增加史莱姆存活状态判断,避免史莱姆死亡后仍与玩家碰撞导致游戏失败。
-
最后加入背景音乐(BGM):在音频资源中启用循环,在主场景添加音频节点并设置自动播放。为避免游戏重启时背景音乐重复创建与重播,将 BGM 节点单独保存为场景,并通过 Godot 的"自动加载(Autoload)"功能加载,使其在整个游戏生命周期中保持唯一且持续播放,完成音效与背景音乐的整体整合。
- 实现过程
- 我们给玩家发射子弹的时候自动播放子弹音效,在godot中播放声音也是通过节点进行完成的,所以就是在玩家场景中添加AudioStreamPlayer节点

- 我们把文件夹中枪声的音效拖动到这个音频节点上并且重命名为FireSound
- 然后让我们来到玩家场景的脚本代码中,让我们在发射子弹的函数里面添加一行代码,利用音频节点,进行播放声音,注意这里是直接拖动的,所以不要再进行修改开火声音的节点名字
- 接下来让我们添加游戏失败的音效,新建一个音频节点,然后拖动音效文件到对应属性里面去
- 然后我们在game_over函数里面添加游戏失败的音效
- 然后接下来我们需要添加玩家跑步的音效,另外值得一提的是玩家跑步的音效需要进行循环播放,因为只要玩家在移动这个音效就要一直播放,所以在设置音频节点之前,我们需要先设置一下这个音频文件,记得勾选完之后要点击一下下面的重新导入

- 然后我们新建一个音频节点,然后将这个跑步的声音赋值过去
- 然后我们新建一个函数去播放玩家跑步的声音,当玩家不移动或者游戏结束时停止播放,当玩家没有在播放跑步声音的时候就开始播放跑步声音
- 接下来我们给消灭史莱姆也进行添加音效,我们来到史莱姆场景中,添加音频节点,然后命名为DeathSound
- 然后我们需要将史莱姆被消灭的音效拖动到音频节点上

- 然后我们到子弹碰撞函数里面去添加播放消灭史莱姆音效声音的代码

- 修一个小问题:当史莱姆死亡后,那个0.6秒玩家碰到之后也会进行输掉游戏所以我们需要到史莱姆场景的脚本代码中添加一个检测,只有当史莱姆活着且撞到玩家,玩家才会输掉游戏
- 最后我们给游戏添加上一个BGM背景音乐,这里我们也是启用一下循环播放,并且进行重新导入
- 然后来到我们的主场景添加音频节点
- 把bgm音乐赋值到这个音频节点上,还要勾选一下下面的autoplay这样子bgm就会在游戏一开始的时候进行播放了,这个节点名称重命名为BGM节点
- 然后我们需要对这个播放bgm的音频节点进行一下处理,因为当游戏重新启动之后再主场景下的音频节点就会进行重新播放bgm,然后我们可以让bgm节点出于主场景的节点之外。我们可以使用到godot的自动加载功能,自动加载功能可以让一个场景或者节点在游戏开始的时候自动加载出来与主场景进行同时存在
- 我们来到左上角项目,点击项目设置

- 然后点击全局,点击自动加载就可以看到这个界面,我们需要把bgm节点进行保存为场景
- 我们右键BGM节点,然后选择将分支节点保存为场景,然后保存到Scense文件夹中

- 保存完之后记得要删掉这个原先的节点,然后到自动加载界面去添加这个BGM场景