Spelersbewegingen spelen een cruciale rol om Godot-spellen aantrekkelijker te maken. Leer hoe je het implementeert.

Het implementeren van spelersbewegingen is een fundamenteel aspect van het maken van boeiende games in de Godot Game Engine. Spelersbewegingen stellen gebruikers in staat personages te besturen, gamewerelden te verkennen en interactie te hebben met verschillende elementen in de game-omgeving.

Het Godot-spel opzetten

Maak om te beginnen een nieuw 2D-project aan in de Godot-game-engine. Volg daarna deze stappen om spelersbewegingen aan je spel toe te voegen

Maak een nieuwe scène door met de rechtermuisknop op het Bestandssysteem paneel en selecteer vervolgens Nieuwe map en het benoemen ervan Scènes. Binnen in de Scènes map, klik met de rechtermuisknop en maak een nieuwe 2D-scène. Sla het op met een geschikte naam, bijv. Speler.tscn.

De code die in dit artikel wordt gebruikt, is hierin beschikbaar GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.

Voeg een... toe

KarakterBody2D node naar de scène door te klikken op de Knooppunt toevoegen knop en selecteren KarakterBody2D uit de knooppuntenbibliotheek.

Met de KarakterBody2D knooppunt geselecteerd, klikt u op de Onderliggend knooppunt toevoegen knop om een ​​toe te voegen BotsingVorm2D. Pas de vorm van de BotsingVorm2D overeenkomen met de afmetingen van de speler. U kunt voor de eenvoud een rechthoekige vorm gebruiken.

Voeg vervolgens een toe Sprite2D bestanddeel aan de KarakterBody2D node en kies een geschikte sprite voor het personage van je speler.

Spelersbewegingen toevoegen met behulp van toetsenbordinvoer

Nu kun je spelersbewegingen toevoegen met behulp van toetsenbordinvoer aan de Speler.gd script.

Verleng de KarakterBody2D node, stel de bewegingssnelheid in en verkrijg de invoer van de pijltoetsen (ui_left, ui_right, ui_up, ui_down). Bereken de bewegingssnelheid op basis van de invoerrichting, normaliseer deze en verplaats de speler vervolgens met behulp van de beweeg_en_bots functie in de _fysica_proces methode.

extends CharacterBody2D

var speed = 300

func _physics_process(delta):
var input_dir = Vector2.ZERO
if Input.is_action_pressed("ui_left"):
input_dir.x -= 1
if Input.is_action_pressed("ui_right"):
input_dir.x += 1
if Input.is_action_pressed("ui_up"):
input_dir.y -= 1
if Input.is_action_pressed("ui_down"):
input_dir.y += 1

velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)

Rotatie toevoegen

Om de speler in de bewegingsrichting te laten kijken, kun je rotatie aan je speler toevoegen. Update de Speler.gd script als volgt:

extends CharacterBody2D

@export var speed = 400
@export var rotation_speed = 1.5

var rotation_direction = 0

func get_input():
rotation_direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
velocity = transform.x * (Input.get_action_strength("ui_up") - Input.get_action_strength("ui_down")) * speed

func _physics_process(delta):
get_input()
rotation += rotation_direction * rotation_speed * delta
move_and_slide()

De speler draait in de bewegingsrichting. De rotatiesnelheid kan worden aangepast met behulp van de rotatiesnelheid variabel.

Spelersbewegingen toevoegen met behulp van muisinvoer

Nu kun je spelersbewegingen implementeren met behulp van muisinvoer om de speler naar de positie van de muisklik te verplaatsen of de speler naar de muisaanwijzer te laten kijken:

extends CharacterBody2D

@export var speed = 300

func _physics_process(delta):
if Input.is_action_just_pressed("click"):
var target_position = get_global_mouse_position()
var direction = (target_position - global_position).normalized()
velocity = direction * speed * delta
move_and_collide(velocity)

In deze code beweegt de speler naar de positie van de muisklik wanneer de Klik actie wordt geactiveerd. De snelheid van de speler kan worden geregeld met behulp van de snelheid variabel.

Bovendien kunt u op de muis gebaseerde rotatie ook als volgt implementeren:

extends CharacterBody2D

func _physics_process(delta):
var mouse_position = get_global_mouse_position()
var target_direction = (mouse_position - global_position).angle()
rotation = target_direction

In deze versie zal de sprite van de speler recht tegenover de positie van de muisaanwijzer staan.

Inclusief extra functies

Hoewel de basisbewegingen van de speler essentieel zijn voor de meeste games, kan het toevoegen van extra functies de ervaring van je speler naar een hoger niveau tillen. Hier zijn enkele opwindende functies die u kunt overwegen om in uw spel te implementeren om de beweging van spelers te verbeteren:

Springen

Implementatie van springmechanismen stelt spelers in staat om door obstakels te navigeren, hogere platforms te bereiken en een extra laag interactiviteit toe te voegen aan de gamewereld. U kunt de spronghoogte regelen en animaties toevoegen om het visueel aantrekkelijk te maken.

Dash of Sprint

Met een dash-vaardigheid kan de speler snel bewegen voor een korte burst, wat handig kan zijn om vijanden te ontwijken of uitdagende gebieden te doorkruisen. Deze functie voegt een dynamisch element toe aan de gameplay en verbetert het gevoel van controle van de speler.

Wandglijden en klimmen

Door de introductie van wandschuif- en klimmechanismen kunnen spelers communiceren met verticale oppervlakken. Spelers kunnen langs muren glijden, muursprongen maken of zelfs bepaalde obstakels beklimmen. Deze functie is vooral populair in platformspellen.

Platformer mechanica

Voor platformgames, kun je zwaartekracht, versnelling en vertraging integreren om een ​​soepele en realistische bewegingservaring te creëren. Door deze mechanismen te verfijnen, kan het spel meer gepolijst en leuker aanvoelen.

Onthoud dat de sleutel tot het succesvol implementeren van extra functies ligt in het balanceren en naadloos integreren ervan in de gameplay. Elke functie moet de bewegingsmechanismen van de kernspeler aanvullen en bijdragen aan de algehele game-ervaring.

Best practices voor het toevoegen van spelersbewegingen

Als het gaat om het implementeren van spelersbewegingen in je Godot-spel, volg dan deze best practices zal niet alleen uw code schoner en efficiënter maken, maar ook bijdragen aan een betere speler ervaring:

Afzonderlijke zorgen

Organiseer uw spelerbewegingslogica in afzonderlijke functies of scripts. Maak bijvoorbeeld een script voor het afhandelen van spelerinvoer, een ander voor karakterbewegingen en mogelijk nog een voor het afhandelen van animaties.

Het scheiden van zorgen maakt uw code meer modulair en gemakkelijker te onderhouden, en bevordert ook een betere samenwerking tussen teamleden.

Deltatijd gebruiken

Vermenigvuldig uw waarden bij het berekenen van beweging altijd met de deltatijd (delta) om een ​​soepele beweging over verschillende framesnelheden te garanderen. Delta-tijd vertegenwoordigt de verstreken tijd sinds het laatste frame en zorgt ervoor dat de speler met een constante snelheid beweegt, ongeacht de prestaties van het apparaat.

Beperk bewegingssnelheid

Stel maximale bewegingssnelheden voor uw speler in om onbedoelde snelle bewegingen te voorkomen. Deze beperking kan handig zijn om te voorkomen dat spelers de fysica van het spel breken of problemen ondervinden met botsingsdetectie.

Overweeg natuurkundige lagen en botsingsmaskers

Met Godot kun je botsingslagen en maskers configureren voor verschillende objecten in je spel. Door deze lagen en maskers correct in te stellen, kunt u bepalen welke objecten tijdens beweging met elkaar kunnen communiceren. U wilt bijvoorbeeld dat de speler botst met vaste objecten, maar niet door niet-vaste objecten gaat.

Voeg visuele en audiofeedback toe

Implementeer visuele effecten en geluidssignalen om spelers feedback te geven tijdens bewegingen. Door bijvoorbeeld stofdeeltjes toe te voegen wanneer de speler rent of voetstappen te horen, kan het gevoel van onderdompeling en betrokkenheid worden versterkt.

Godot-spellen aantrekkelijker maken met spelersbewegingen

Vloeiende en responsieve bewegingsmechanismen kunnen de algehele spelerservaring aanzienlijk verbeteren. Of het nu gaat om het verkennen van een uitgestrekte wereld, het ontwijken van vijanden of het oplossen van puzzels, soepele spelersbewegingen verbeteren de onderdompeling en houden spelers verslaafd.

Door spelersbewegingen te implementeren met behulp van GDScript en de CharacterBody2D-node, kun je dynamische en plezierige gameplay-ervaringen creëren. De mogelijkheid om vrij te bewegen en te interageren met de gamewereld stelt spelers in staat en zorgt ervoor dat ze zich verbonden voelen met de virtuele omgeving.