13. 音频、粒子与特效
2026/4/14大约 2 分钟
音频、粒子与特效
前面几章让游戏"能玩"了。本章的目标是让它"好玩"——加入声音和视觉特效,让游戏活起来。
音频系统
音效 vs 背景音乐
| 类型 | 特点 | 节点 | 格式 |
|---|---|---|---|
| 音效 | 短促、即时播放 | AudioStreamPlayer2D | .wav、.ogg |
| 背景音乐 | 长时间循环播放 | AudioStreamPlayer | .ogg、.mp3 |
提示
AudioStreamPlayer2D 会让音效有"距离感"——离声源越远声音越小。适合 2D 游戏中的环境音效。AudioStreamPlayer 没有距离感,适合背景音乐和 UI 音效。
播放音效
C#
// 最简单的播放方式
GetNode<AudioStreamPlayer2D>("JumpSound").Play();
// 带音量控制的播放
GetNode<AudioStreamPlayer2D>("HitSound").VolumeDb = -5.0f;
GetNode<AudioStreamPlayer2D>("HitSound").Play();GDScript
# 最简单的播放方式
$JumpSound.play()
# 带音量控制的播放
$HitSound.volume_db = -5.0
$HitSound.play()音频总线(Audio Bus)
Godot 的音频总线就像调音台上的音轨,可以把不同音效分组控制:
- Master(主音量):控制所有声音的总音量
- BGM(背景音乐):只控制背景音乐
- SFX(音效):只控制音效
设置路径:编辑器底部 → 音频 标签页
C#
// 设置背景音乐音量(值 0.0~1.0)
int bgmBusIdx = AudioServer.GetBusIndex("BGM");
AudioServer.SetBusVolumeDb(bgmBusIdx, Mathf.LinearToDb(0.7f));GDScript
# 设置背景音乐音量(值 0.0~1.0)
var bgm_bus_idx = AudioServer.get_bus_index("BGM")
AudioServer.set_bus_volume_db(bgm_bus_idx, linear_to_db(0.7))粒子特效(GPUParticles2D)
用来制作爆炸、火焰、灰尘、雨雪等效果。
添加步骤
- 添加
GPUParticles2D节点 - 配置
ParticleProcessMaterial(粒子处理材质) - 调整参数:方向、速度、颜色、生命周期、数量
常用参数
| 参数 | 说明 | 建议值 |
|---|---|---|
Amount | 同时存在的粒子数量 | 爆炸: 20~50,火焰: 30~100 |
Lifetime | 每个粒子存活时间(秒) | 爆炸: 0.3~0.8,烟雾: 1~3 |
Direction | 粒子发射方向 | 爆炸: 随机,火焰: 向上 |
Spread | 发射角度范围 | 爆炸: 180°,火焰: 30° |
提示
Godot 编辑器中可以直接预览粒子效果,边调参数边看效果,非常方便。
视觉反馈——让游戏"有手感"
好的游戏会在玩家操作后立刻给出视觉反馈:
| 事件 | 反馈效果 | 实现方式 |
|---|---|---|
| 踩到敌人 | 敌人缩小消失 + 弹跳分数文字 | Tween 缩放 + Label 弹出 |
| 拾取金币 | 金币飞向 HUD + 闪光 | Tween 移动 + GPUParticles2D |
| 受到伤害 | 屏幕闪红 + 角色闪烁 | CanvasModulate + 透明度闪烁 |
| 游戏胜利 | 粒子庆祝 + 文字弹出 | GPUParticles2D + Tween |
下一章
音效和特效做好了,接下来是调试与数值设计。
