6. Collectibles

Implementeer munten met Area3D en track score met signals en groups

Overzicht

In dit hoofdstuk voeg je collectibles toe aan je platformer - munten die de player kan verzamelen. Je implementeert:

  • Coin scene met Area3D voor collision detection

  • Score tracking met signals en groups

  • ScoreManager als autoload singleton

Coin scene maken

Begin met een simpele coin-scene die je later kunt oprapen.

circle-check

Coin model toevoegen

Voeg nu het coin-model toe.

circle-check

Scene hierarchy:

CollisionShape3D Toevoegen

Elke physics body heeft een collision shape nodig.

circle-check

Scene hierarchy (updated):

Plaats de coin in de level

Voeg de coin toe aan de level om te testen.

circle-check

Coin script toevoegen

Schrijf nu een script dat detecteert wanneer de player de coin raakt.

circle-check

BodyEntered Signal Verbinden

Verbind het BodyEntered-signaal van de Area3D aan je OnBodyEntered()-methode via de UI.

circle-check

Test de signal connection

Test eerst of de signal correct verbonden is.

circle-check

Coin verzamelen

Wanneer de Coin wordt geraakt, moeten er een aantal zaken gebeuren.

  • de coin moet verdwijnen

  • een signal moet verstuurd worden dat er een punt verzameld is

  • dit mag enkel gebeuren als het de speler is die de coin aanraakt

circle-check

ScoreManager

In plaats van een ScoreManager node in elke scene te plaatsen, maak je het een autoload. Dit betekent dat ScoreManager automatisch beschikbaar is in het hele spel, en de score blijft behouden zelfs als je van scene wisselt.

circle-check

Score tracking - signals

Wanneer een Coin wordt verzameld, wil je dat die coin een signaal uitstuurt waar de ScoreManager naar kan luisteren.

circle-check

Coin group

Nu moet je alle coins vinden in de level om te luisteren naar hun Signals. Groups zijn een Godot feature om nodes te organiseren. Door alle Coins in één group te plaatsen, kan de ScoreManager gemakkelijk alle Coins vinden.

circle-check

ScoreManager Logic

De scoreManager moet reageren wanneer een Coin een signaal uitstuurt dat die is verzameld. Om dat te kunnen doen, moet de scoreManager aan begin van het spel alle coins in de level vinden, en vervolgens een functie koppelen aan het collected Signal van elke Coin.

circle-check
circle-check

Meerdere coins toevoegen

circle-check

Test score tracking

circle-check

Complete scripts

chevron-rightKlik hier voor de volledige Coin.cs en ScoreManager.cs scriptshashtag

Coin.cs

ScoreManager.cs

Laatst bijgewerkt