Este video cubre todos los aspectos del audio usando el motor de juego Godot 3. Cubrimos cómo reproducir audio usando un AudioStreamPlayer, luego veremos cómo crear uno dinámicamente. Luego analizamos en profundidad cómo funcionan los buses de audio, cómo crear efectos especiales. También veremos cómo realizar audio posicional y cómo limitar su reproducción usando Area2D. Después de este tutorial, deberías saber todo lo que necesitas para ser efectivo con el audio en Godot.
El video
Activos y muestras de código
DynamicAudio.gd
extends Node func _ready(): var player = AudioStreamPlayer.new() self.add_child(player) player.stream = load("res://belch.wav") player.play()
SpritePositionalAudio.gd
extends Sprite func _ready(): get_viewport().audio_listener_enable_2d = true $AudioStreamPlayer2D.play() func _process(delta): if self.position.x > 0 - self.texture.get_width(): move_local_x(-1) else: self.position.x = get_viewport().get_visible_rect().size.x
BotónOpción.gd
extends OptionButton var files = [] func _ready(): var player = get_tree().get_root().get_node("Node/AudioStreamPlayer") var dir = Directory.new() if dir.open("res://") == OK: dir.list_dir_begin() var file = dir.get_next() while (file != ""): if file.ends_with("wav") or file.ends_with("ogg"): files.append(file) file = dir.get_next() for i in range(files.size()): self.add_item(files[i],i) player.stream = load("res://" + files[0]) func _on_OptionButton_item_selected(ID): if files.size() > 0: var player = get_tree().get_root().get_node("Node/AudioStreamPlayer") player.stream = load("res://" + files[ID])
BotónReproducir.gd
extends Button var player func _ready(): player = get_tree().get_root().get_node("Node/AudioStreamPlayer") func _on_PlayButton_pressed(): if get_node("/root/Node/PanelContainer/VBoxContainer/LoopContainer/CheckBoxLoop").pressed == true: setLoopMode(player.stream, 1) else: setLoopMode(player.stream, 0) print("Playing sound") player.play() func setLoopMode(stream,loop): if(stream is AudioStreamOGGVorbis): stream.loop = bool(loop) else: #Its a wave stream.loop_mode = loop func _on_StopButton_pressed(): player.stop()