4. Input Actions en Basis Beweging

Leer Input Actions configureren en implementeer basis beweging met CharacterBody3D

Overzicht

In dit hoofdstuk breng je je ruimteschip tot leven! Je implementeert automatische voorwaartse beweging en 4-richtingen controle (links, rechts, omhoog, omlaag). Daarna voeg je een camera toe als child node die automatisch met het schip meevliegt.

Input actions configureren

Voordat je input kunt verwerken, moet je Input Actions definiëren in de Project Settings. Dit zijn benoemde acties (zoals "move_left") die je kunt koppelen aan toetsenbord keys, controller buttons, etc.

circle-check
circle-info

Voor Azerty gebruikers gebruik je de toetsen ZQSD. Godot zal dan de fysieke locatie gebruiken van de toets (bv. voor Z zal dit W (physical) zijn).

Camera toevoegen als child node

Voordat je beweging programmeert, heb je een camera nodig om te zien wat er gebeurt! Voeg een camera toe die automatisch met het schip meevliegt.

In Godot is de positie van een child node relatief aan de parent. Omdat de Camera3Darrow-up-right een child wordt van Player, beweegt deze automatisch mee wanneer Player beweegt.

circle-check
circle-info

Als je scene nog een losse Camera3D heeft (niet als child van Player), kun je deze verwijderen met Delete. Gebruik nu alleen de camera die met het schip meebeweegt.

Auto-forward movement implementeren

Laat het ruimteschip automatisch vooruit vliegen! Maak een variabele voor de snelheid en gebruik deze in _PhysicsProcess() om het schip te bewegen.

Nieuwe Godot-specifieke elementen:

  • [Export]arrow-up-right - Maakt de variabele zichtbaar in de Inspector, zodat je de snelheid kunt aanpassen zonder code te wijzigen

  • Velocityarrow-up-right - Een Vector3 property die de snelheid van de CharacterBody3D bepaalt

  • MoveAndSlide()arrow-up-right - Beweegt de CharacterBody3D op basis van de Physics eigenschappen (zoals Velocity) van de CharacterBody3D en detecteert collision met de omgeving

  • Transform.Basisarrow-up-right - De forward richting van het object in local space

  • -forwardSpeed - Negatief omdat in Godot -Z = vooruit is

  • _PhysicsProcess() - Wordt aangeroepen op vaste tijdsintervallen, perfect voor physics-based beweging

CharacterBody3D heeft ingebouwde physics. Door Velocity in te stellen en MoveAndSlide() aan te roepen, kan je schip nu dus botsen met obstakels en andere physics objecten.

circle-check

Turning en vertical movement toevoegen

Voeg nu stuurbesturing toe! Het schip kan draaien (links/rechts) en omhoog/omlaag bewegen. Het schip beweegt altijd in de richting waar het naartoe wijst.

Nieuwe Godot-specifieke elementen:

circle-check
circle-info

Experimenteer met snelheden! Selecteer de Player node in Godot en kijk in de Inspector. Je ziet nu Forward Speed, Turn Speed en Vertical Speed dankzij [Export]. Pas de waarden aan en test opnieuw!

Boost functie toevoegen

Voeg een boostfunctie toe die het schip 20% sneller maakt wanneer je de spatiebalk indrukt.

Boost input actie

circle-check

Boost multiplier

circle-check

Boost toepassen

De boost werkt door de forward speed tijdelijk te verhogen. Pas de forward movement code aan.

circle-check

Complete Script

chevron-rightKlik hier voor het volledige PlayerController.cs scripthashtag

Laatst bijgewerkt