Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать чтобы проигравание звука в godot?

Максим Исаев Ученик (69), закрыт 8 месяцев назад
Как сделать чтобы когда игрок касался Area 2D Произносился звук (Один раз)?
Лучший ответ
Остальные ответы
Rooty Official Профи (751) 9 месяцев назад
  1. Создай AudioStreamPlayer: Добавь AudioStreamPlayer в сцену и подключи к нему звуковой файл (.ogg, .mp3, и т.д.).
  2. Добавь Area2D: Создай Area2D и прикрепи его к объекту, с которым игрок должен взаимодействовать.
  3. Напиши код: В скрипте 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")
Объясненяю
  1. export var sound : AudioStreamPlayer: Объявляем переменную sound как AudioStreamPlayer, чтобы можно было привязать ее к нужному узлу в сцене.
  2. sound = $AudioStreamPlayer: Привязываем переменную sound к AudioStreamPlayer, который ты добавил в сцену.
  3. _on_Area2D_body_entered(body): Функция, которая вызывается, когда в Area2D входит другой объект.
  4. if body.is_in_group("Player"): Проверяем, что в Area2D вошел объект с группой “Player”.
  5. sound.play(): Проигрываем звук.
  6. sound.connect("finished", self, "_on_sound_finished"): Подписываемся на сигнал finished от AudioStreamPlayer (который вызывается, когда звук заканчивается).
  7. _on_sound_finished(): Функция, которая вызывается, когда звук заканчивается. Она отписывается от сигнала finished, чтобы звук не проиграл еще раз.


Из важного
  1. Убедись, что группа “Player” присутствует у твоей персонажа в Node “Player”.
  2. Ты можешь удалить код с отключением finished, если тебе нужно, чтобы звук играл каждый раз, когда игрок касается Area2D.
Максим ИсаевУченик (69) 9 месяцев назад
А как исправить эту ошибку?
Rooty Official Профи (751) Максим Исаев, Godot может ругаться на connect и disconnect, если в _ready не указана установка переменной sound. :< Проверь, что ты правильно присвоил AudioStreamPlayer переменной sound:
 extends Area2D 
 
export var sound : AudioStreamPlayer 
 
func _ready(): 
    sound = $AudioStreamPlayer  # Проверь,  что  ты  правильно  написал  имя  узла  $AudioStreamPlayer 
    # После  этого  можно  подключаться  к  сигналу 
    sound.connect("finished", self, "_on_sound_finished") 
 
func _on_Area2D_body_entered(body): 
    if body.is_in_group("Player"): 
        sound.play() 
 
func _on_sound_finished(): 
    sound.disconnect("finished", self, "_on_sound_finished")  
Убедись, что в иерархии сцены имя AudioStreamPlayer написано правильно и что он действительно прикреплен к Area2D.
Арсений АрсеньевУченик (77) 3 месяца назад
Звук проигрывается, но бесконечно. Один раз вступил в ареа2д проигрывается бесконечно раз
Похожие вопросы