文章目录
本章节效果图
- 本章节效果图
- 步骤
- 1. 确认音频资源
- 2. 新建AudioManager场景
- 3. 配置音频资源
- 4. 添加脚本
- 5. 保存"AudioManager"场景
- 6. 将"AudioManager"场景设置为单例场景
- 7. 调用"AudioManager"
本节增加的是音效,请大家结合下图脑补
场景根节点“AudioManager”的类型为
Node
类型
注意: 共有3个以"AudioStreamPlayer"开头的节点:
AudioStreamPlayer
:位置无关的音频流播放器(2D/3D通用)AudioStreamPlayer2D
位置相关的音频流播放器2DAudioStreamPlayer3D
位置相关的音频流播放器3D
本例中我们为每个音频资源,添加一个位置无关版本的音频流播放器
"AudioManager"配置完毕的样子
extends Node
func play(name : String):
var sfx = find_node(name)
if sfx is AudioStreamPlayer:
sfx.play()
6. 将"AudioManager"场景设置为单例场景
关于使用自动加载(AutoLoad)实现单例场景的详细介绍,请见《 Godot Engine:用自动加载(AutoLoad)实现单例模式(Singleton) 》
# Bird.gd
extends RigidBody2D
func _ready():
connect("body_entered",self,"on_body_entered")
func _physics_process(delta):
if Input.is_mouse_button_pressed(1):
AudioManager.play("sfx_swooshing")#音效
linear_velocity = Vector2.UP*500
angular_velocity = -3.0
if rotation_degrees 0.0:
angular_velocity = 1.5
func on_body_entered(_body):
if _body is StaticBody2D:
AudioManager.play("sfx_hit")#音效
print("Die.....")
#ScoreArea.gd
extends Area2D
func _ready():
connect("body_exited",self,"_on_body_exited")
func _on_body_exited(_body):
if _body.name == "Bird":
AudioManager.play("sfx_point")#音效
print("得分!!!!")