godot2D游戏教程系列一(8)

  • 前言:
  • 完成目标
  • 本阶段主要完善游戏的音效与音乐系统。首先在玩家场景中添加 ​​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场景
相关推荐
xian_wwq2 小时前
【学习笔记】AGC协调控制系统概述
笔记·学习
x_yeyue2 小时前
三角形数
笔记·算法·数论·组合数学
薛定猫AI2 小时前
【深度解析】Gemini Omni 多模态生成与 Agent 化创作工作流:从视频编辑到 UI 生成的技术演进
人工智能·ui·音视频
憧憬成为java架构高手的小白3 小时前
docker学习笔记(基于b站多个视频学习)【未完结】
笔记·学习
辰海Coding3 小时前
MiniSpring框架学习-完成的 IoC 容器
java·spring boot·学习·架构
RainCity4 小时前
Java Swing 自定义组件库分享(七)
java·笔记·后端
闫记康4 小时前
Linux学习day5
linux·chrome·学习
一楼的猫4 小时前
从工具链视角对比:番茄作家助手 vs 第三方写作辅助方案
java·服务器·开发语言·前端·学习·chatgpt·ai写作
東隅已逝,桑榆非晚5 小时前
字符函数和字符串函数
c语言·笔记
他们叫我阿冠5 小时前
实习前自我培训-Day1学习
学习