Audio Effects
Voeg geluid toe aan je arcade racer met AudioStreamPlayer
Overzicht
Voeg verschillende geluiden toe aan je arcade racer:
Background music - Loopende achtergrondmuziek tijdens het spel
Engine sound - Loopend motorgeluid met pitch verandering tijdens boost
Ring collection sound - Bevestigingsgeluid bij het verzamelen van ringen (zonder scripting!)
AudioStreamPlayer vs AudioStreamPlayer3d
Godot heeft verschillende audio nodes:
AudioStreamPlayer: 2D geluid zonder positie (UI sounds, achtergrondmuziek)
AudioStreamPlayer2D: 2D geluid met positie (voor 2D games)
AudioStreamPlayer3D: 3D geluid met positie en afstand (voor 3D games)
Voor je arcade racer gebruik je AudioStreamPlayer omdat de camera altijd de spaceship volgt. Je hebt geen 3D positie-gebaseerde audio nodig - het geluid komt altijd "van de speler".
Background music toevoegen
Begin met achtergrondmuziek die altijd loopt tijdens het spel. Godot ondersteunt .wav, .ogg, en .mp3 bestanden. Voor achtergrondmuziek is .ogg het beste omdat het gecomprimeerd is (kleinere bestanden) en naadloos kan loopen.
Open scenes/main.tscn
Selecteer de Main root node (of hoogste node in je scene)
Rechts-klik > Add Child Node > AudioStreamPlayer
Hernoem deze node naar BackgroundMusic
Sla de scene op
Selecteer de BackgroundMusic node
In de Inspector, vind Stream > dropdown > Quick Load...
Selecteer music.ogg
Zet Autoplay op AAN (muziek start automatisch)
Pas Volume Db aan naar -10.0 (achtergrondmuziek mag niet te luid zijn)
Engine sound toevoegen
Voeg nu een loopend motorgeluid toe dat verandert tijdens boosten.
Open scenes/main.tscn (of je Player scene)
Selecteer de Player node
Rechts-klik > Add Child Node > AudioStreamPlayer
Hernoem deze node naar EngineSound
Sla de scene op
Selecteer de EngineSound node
In de Inspector, vind Stream
Klik op het dropdown > Load
Navigeer naar res://audio/engine_loop.wav (of je eigen engine sound file)
Selecteer het audio bestand en klik Open
Expand Stream en vink Loop aan (muziek herhaalt eindeloos)
Zet Autoplay op AAN (geluid start automatisch)
Test met F5!
Je zou nu moeten horen:
Engine geluid start automatisch wanneer het spel begint
Het geluid loopt continu zonder pauzes
Achtergrondmuziek en engine sound spelen tegelijk
Boost sound effect met pitch
In plaats van een apart boostgeluid, verhoog je de pitch (toonhoogte) van het motorgeluid tijdens boosten. Dit geeft een acceleratie-effect.
PitchScale verandert de toonhoogte van het geluid. 1.0 is normaal, hoger dan 1.0 klinkt sneller en hoger, lager dan 1.0 klinkt langzamer en dieper. We interpoleren smooth tussen normale en boost pitch voor een vloeiend effect.
Open scripts/PlayerController.cs
Voeg een exported field toe voor de engine sound:
Voeg constanten toe voor normale en boost pitch:
Update
UpdateCameraFov()om ook de engine pitch aan te passen:
Engine Sound Toewijzen
Open scenes/main.tscn
Selecteer de Player node
In de Inspector, zie je nu een nieuwe property: Engine Sound
Klik op Assign en navigeer naar Player > EngineSound
Selecteer de EngineSound node
Sla de scene op
Test met F5!
Je zou nu moeten horen:
Engine geluid loopt continu
Wanneer je de spatiebalk indrukt, wordt het engine geluid hoger en sneller
Wanneer je de boost loslaat, gaat het geluid smooth terug naar normaal
Camera FOV, speed lines, en engine pitch veranderen allemaal tegelijk
Als de pitch verandering niet werkt:
Controleer of EngineSound correct is toegewezen in de Inspector
Check of
_engineSound.PitchScalewordt aangepast in de codeZorg dat de interpolatie werkt (0.1f parameter)
Ring Collection Sound
Nu voegen we een geluid toe wanneer de speler door een ring vliegt - zonder scripting, alleen met signals via de UI.
Open objects/checkpoint.tscn
Selecteer de Checkpoint root node (Area3D)
Rechts-klik > Add Child Node > AudioStreamPlayer
Hernoem deze node naar CollectSound
Sla de scene op
Selecteer de CollectSound node
In de Inspector, vind Stream > dropdown > Quick Load...
Selecteer laserLarge_001.ogg
Zet Autoplay op UIT
Expand Stream en zorg dat Loop UIT staat
Ring Sound Connecten via UI
Connecteer het body_entered-signaal van de Ring Area3D aan de Play()-methode van CollectSound.
Selecteer de Ring root node (Area3D)
Rechts van de Inspector zie je een tabblad Node
Klik op de Node tab
Je ziet een lijst met Signals
Vind het body_entered(body: Node3D) signal
Dubbelklik op body_entered
Er opent een "Connect a Signal to a Method" dialoog.
In het dialoog, zie je een boomstructuur met nodes
Navigeer naar Checkpoint > CollectSound
Selecteer de CollectSound node
Rechts zie je "Receiver Method"
Typ in het tekstveld:
play(dit is deplay()method van AudioStreamPlayer)Opgelet! het is
playmet kleine letterp
Klik Connect
Test met F5!
Je zou nu moeten horen:
Achtergrondmuziek loopt
Engine geluid loopt en verandert tijdens boost
Wanneer je door een ring vliegt, speelt een collection geluid
Complete Script
Laatst bijgewerkt