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场景
相关推荐
前路不黑暗@1 小时前
Java项目:Java脚手架项目的 B 端用户服务(十四)
android·java·开发语言·spring boot·笔记·学习·spring cloud
锅包一切1 小时前
PART17 一维动态规划
c++·学习·算法·leetcode·动态规划·力扣·刷题
科技林总1 小时前
【系统分析师】9.3 通信与网络安全技术
学习
子辰ToT3 小时前
LearnOpenGL——高级光照(七)HDR
笔记·图形渲染·opengl
CappuccinoRose4 小时前
CSS 语法学习文档(十五)
前端·学习·重构·渲染·浏览器
山岚的运维笔记4 小时前
SQL Server笔记 -- 第63章:事务隔离级别
数据库·笔记·sql·microsoft·oracle·sqlserver
智者知已应修善业5 小时前
【排列顺序判断是否一次交换能得到升序】2025-1-28
c语言·c++·经验分享·笔记·算法
HuDie3405 小时前
AI产品经理课程笔记
人工智能·笔记·产品经理
香芋Yu5 小时前
【大模型面试突击】04_Embedding与表示学习
学习·面试·embedding
lingliang6 小时前
Web3学习笔记:Day2-Solidity基础语法
笔记·学习·web3