- Создай AudioStreamPlayer: Добавь AudioStreamPlayer в сцену и подключи к нему звуковой файл (.ogg, .mp3, и т.д.).
- Добавь Area2D: Создай Area2D и прикрепи его к объекту, с которым игрок должен взаимодействовать.
- Напиши код: В скрипте Area2D используй сигнал body_entered. В его обработчике проиграй звук:
extends Area2D
export var sound : AudioStreamPlayer
func _ready():
sound = $AudioStreamPlayer
func _on_Area2D_body_entered(body):
if body.is_in_group("Player"):
sound.play()
# Если нужно, чтобы звук играл только один раз:
sound.connect("finished", self, "_on_sound_finished")
func _on_sound_finished():
sound.disconnect("finished", self, "_on_sound_finished")
Объясненяю
- export var sound : AudioStreamPlayer: Объявляем переменную sound как AudioStreamPlayer, чтобы можно было привязать ее к нужному узлу в сцене.
- sound = $AudioStreamPlayer: Привязываем переменную sound к AudioStreamPlayer, который ты добавил в сцену.
- _on_Area2D_body_entered(body): Функция, которая вызывается, когда в Area2D входит другой объект.
- if body.is_in_group("Player"): Проверяем, что в Area2D вошел объект с группой “Player”.
- sound.play(): Проигрываем звук.
- sound.connect("finished", self, "_on_sound_finished"): Подписываемся на сигнал finished от AudioStreamPlayer (который вызывается, когда звук заканчивается).
- _on_sound_finished(): Функция, которая вызывается, когда звук заканчивается. Она отписывается от сигнала finished, чтобы звук не проиграл еще раз.
Из важного
- Убедись, что группа “Player” присутствует у твоей персонажа в Node “Player”.
- Ты можешь удалить код с отключением finished, если тебе нужно, чтобы звук играл каждый раз, когда игрок касается Area2D.