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场景
相关推荐
兵叔物联3 分钟前
基于FFmpeg的短视频自动剪辑工具
ffmpeg·音视频
AORUO奥偌8 分钟前
从“拼凑”到“集成”:音视频系统如何重塑弱电智能化建设逻辑
音视频·公共广播系统·音视频系统·多媒体会议与ip广播系统·多媒体会议系统
AOwhisky38 分钟前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
前端世界1 小时前
MySQL 基础入门(学习第4天)——约束与 DML 操作详解
数据库·学习·mysql
dear_bi_MyOnly1 小时前
【SpringBoot配置文件】
java·spring boot·后端·学习·spring·java-ee·学习方法
禹亮科技1 小时前
大型国企会议室音视频集成实战:3间120㎡空间Poly G7500+LED大屏+讯飞多语言会议系统落地方案
音视频·视频会议系统集成·上海禹亮科技·讯飞听见多语言会议系统·poly g7500
AOwhisky1 小时前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
math_hongfan1 小时前
鸿蒙Flutter setState机制深入理解
学习·flutter·华为·harmonyos·鸿蒙
其实防守也摸鱼2 小时前
补天SRC新手入门指南:从0到1的漏洞挖掘之路
网络·python·学习·安全·web安全·数据挖掘·挖洞
星恒随风2 小时前
C++ STL 栈详解:stack 的使用、经典题目与简单模拟实现
开发语言·数据结构·c++·笔记·学习