3. Weapon Setup met Signals

Maak een weapon scene en leer signals gebruiken voor communicatie

Overzicht

In dit hoofdstuk maak je een Railgun weapon met zijn eigen script. Je leert hoe je weapon logic scheidt van player logic en signalsarrow-up-right gebruikt voor communicatie tussen nodes.

Input actions

Voor dit hoofdstuk heb je een extra Input Action nodig: shoot, dat zal worden gebruikt om het weapon af te vuren.

circle-check

Railgun scene maken

Om te beginnen heb je een weapon scene nodig. Daarvoor gebruiken we het blaster model uit de assets.

circle-check

Railgun script

Om te kunnen schieten, heb je 2 dingen nodig:

  • de player die een signaal uitstuurt dat ze willen schieten

  • het weapon dat reageert op dat signaal, door een functie uit te voeren

Dat wilt dus zeggen dat je Railgun een script nodig heeft, met een functie die kan schieten.

circle-check

Railgun onshoot method

circle-check

Player shoot signal

circle-check

Shoot signal verbinden met onshoot method

Je hebt een Player die een Shoot signal uitstuurt wanneer de speler klikt, en een Railgun met een OnShoot() method. Verbind deze twee met elkaar!

In Godot doe je dit via het Node panel in de editor. Hier ga je de twee "elektrisch bedraden" - de Player zendt een signaal uit, en de Railgun luistert ernaar. Wanneer het signaal wordt uitgezonden, wordt automatisch de OnShoot() method aangeroepen.

circle-check

Fire rate limiting

Momenteel kan de speler oneindig snel schieten door snel te klikken. Dit maakt het wapen overpowered en het voelt niet geloofwaardig aan. Implementeer een fire rate - een cooldown tijd tussen shots. Gebruik hiervoor een Timerarrow-up-right node om de cooldown bij te houden.

circle-check

Scene hierarchy:

Muzzle marker

Voordat we verder gaan, voeg een Muzzle Marker3D toe aan het wapen. Dit markeert de positie waar de projectielen vandaan komen - de tip van het wapen. Later gebruiken we dit voor visuele effecten zoals muzzle flashes en beam lines.

circle-check
circle-check

Scene hierarchy:

Timer gebruiken in script

Nu passen we het Railgun script aan om de Timer te gebruiken.

circle-check

Weapon mount point

Maak een mount point in de Player scene waar je weapons aan kunt hangen. Dit is een lege Node3D die als referentiepunt dient - het weapon zal deze positie en rotatie volgen.

circle-check

Scene hierarchy:

Weapon transform

Nu hebben we een WeaponMount punt, maar het weapon beweegt nog niet mee! De Railgun staat nog los ergens in de scene. Laat de Railgun elke frame de positie en rotatie van het WeaponMount volgen.

Dit doe je door de GlobalTransformarrow-up-right van de Railgun gelijk te stellen aan de GlobalTransform van de WeaponMount. Een Transformarrow-up-right bevat zowel positie, rotatie als scale - door deze te kopiëren volgt het weapon perfect de mount point.

circle-check

WeaponMount Toewijzen in de Scene

Nu moet je de verbinding maken tussen de Railgun en de WeaponMount.

Het probleem is dat de children van een child-scene (zoals de weaponmount een child is in de player scene) standaard niet zichtbaar zijn. Gelukkig kan je dit gemakkelijk oplossen.

circle-check

Test het weapon system

circle-check

Beam visualisation

Voeg nu een visueel effect toe aan de railgun. Wanneer je schiet, verschijnt er kort een beam die aangeeft waar je heen schiet.

circle-check

Complete railgun script

chevron-rightHier is het volledige Railgun script tot nu toe:hashtag

Laatst bijgewerkt