Spelarrörelser spelar en avgörande roll för att göra Godot-spel mer engagerande. Lär dig hur du implementerar det.

Att implementera spelarrörelse är en grundläggande aspekt av att skapa engagerande spel i Godot Game Engine. Spelarrörelser låter användare styra karaktärer, utforska spelvärldar och interagera med olika element i spelmiljön.

Konfigurera Godot-spelet

För att komma igång, skapa ett nytt 2D-projekt i Godot Game Engine. Följ sedan dessa steg för att lägga till spelarrörelse i ditt spel

Skapa en ny scen genom att högerklicka på Filsystem panelen och välj sedan Ny mapp och namnge den Scener. Inuti Scener högerklicka och skapa en ny 2D-scen. Spara den med ett lämpligt namn, t.ex. Player.tscn.

Koden som används i den här artikeln är tillgänglig i denna GitHub-förråd och är gratis för dig att använda under MIT-licensen.

Lägg till en CharacterBody2D nod till scenen genom att klicka på Lägg till nod knappen och välja CharacterBody2D från nodbiblioteket.

Med CharacterBody2D nod vald, klicka på

instagram viewer
Lägg till barnnod knappen för att lägga till en CollisionShape2D. Justera formen på CollisionShape2D för att matcha spelarens mått. Du kan använda en rektangel för enkelhetens skull.

Lägg sedan till a Sprite2D komponent till CharacterBody2D nod och välj en lämplig sprite för din spelarkaraktär.

Lägga till spelarrörelse med tangentbordsinmatning

Nu kan du lägga till spelarrörelse med tangentbordsinmatning till Player.gd manus.

Utöka CharacterBody2D nod, ställ in rörelsehastigheten och få input från piltangenterna (ui_left, ui_right, ui_up, ui_down). Beräkna rörelsehastigheten baserat på inmatningsriktningen, normalisera den och flytta sedan spelaren med hjälp av flytta_och_krocka funktion i _fysikprocess metod.

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)

Lägger till rotation

För att få spelaren att vända sig mot rörelseriktningen kan du lägga till rotation till din spelare. Uppdatera Player.gd skript enligt följande:

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()

Spelaren kommer att rotera i rörelseriktningen. Rotationshastigheten kan justeras med hjälp av rotationshastighet variabel.

Lägga till spelarrörelse med musingång

Nu kan du implementera spelarrörelser med hjälp av musinmatning för att flytta spelaren till läget för musklicket eller få spelaren att vända sig mot muspekaren:

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)

I den här koden kommer spelaren att röra sig mot positionen för musklicket närhelst klick åtgärden utlöses. Spelarens hastighet kan styras med hjälp av fart variabel.

Dessutom kan du också implementera musbaserad rotation enligt följande:

extends CharacterBody2D

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

I den här versionen kommer spelarens sprite att vara direkt vänd mot muspekarens position.

Inklusive ytterligare funktioner

Även om den grundläggande spelarrörelsen är avgörande för de flesta spel, kan ytterligare funktioner ta din spelares upplevelse till nästa nivå. Här är några spännande funktioner du kan överväga att implementera i ditt spel för att förbättra spelarens rörelse:

Hoppar

Implementering av hoppmekanik tillåter spelare att navigera i hinder, nå högre plattformar och lägga till ett extra lager av interaktivitet till spelvärlden. Du kan styra hopphöjden och lägga till animationer för att göra det visuellt tilltalande.

Dash eller Sprint

En streckförmåga gör att spelaren kan röra sig snabbt under en kort skur, vilket kan vara användbart för att undvika fiender eller korsa utmanande områden. Den här funktionen lägger till ett dynamiskt element till spelet och förbättrar spelarens känsla av kontroll.

Väggskjutning och klättring

Genom att introducera väggglidnings- och klättringsmekanik kan spelare interagera med vertikala ytor. Spelare kan glida ner för väggar, utföra vägghopp eller till och med skala vissa hinder. Denna funktion är särskilt populär i plattformsspel.

Plattformsmekanik

För plattformsspel, kan du införliva gravitation, acceleration och retardation för att skapa en jämn och realistisk rörelseupplevelse. Att finjustera denna mekanik kan få spelet att kännas mer polerat och njutbart.

Kom ihåg att nyckeln till att framgångsrikt implementera ytterligare funktioner ligger i att balansera och integrera dem sömlöst i spelet. Varje funktion bör komplettera spelarens kärnrörelsemekanik och bidra till den övergripande spelupplevelsen.

Bästa metoder för att lägga till spelarrörelse

När det gäller att implementera spelarrörelse i ditt Godot-spel, följ dessa bästa metoder kommer inte bara att göra din kod renare och effektivare utan också bidra till en bättre spelare erfarenhet:

Separata bekymmer

Organisera din spelarrörelselogik i separata funktioner eller skript. Skapa till exempel ett manus för att hantera spelarinput, ett annat för karaktärsrörelser och eventuellt ett till för att hantera animationer.

Att separera problem gör din kod mer modulär och lättare att underhålla, samt främjar bättre samarbete mellan teammedlemmar.

Använd Delta Time

När du beräknar rörelse, multiplicera alltid dina värden med deltatiden (delta) för att säkerställa jämn rörelse över olika bildhastigheter. Deltatid representerar tiden som förflutit sedan den senaste bilden och säkerställer att spelaren rör sig med en konstant hastighet, oavsett enhetens prestanda.

Begränsa rörelsehastigheten

Ställ in maximala rörelsehastigheter för din spelare för att undvika oavsiktliga höghastighetsrörelser. Denna begränsning kan vara användbar för att förhindra spelare från att bryta spelets fysik eller stöta på problem med kollisionsdetektering.

Tänk på fysiklager och kollisionsmasker

Godot låter dig konfigurera kollisionslager och masker för olika objekt i ditt spel. Genom att ställa in dessa lager och masker korrekt kan du styra vilka objekt som kan interagera med varandra under rörelse. Till exempel kanske du vill att spelaren ska kollidera med fasta föremål men inte passera genom icke-fasta.

Lägg till visuell och ljudfeedback

Implementera visuella effekter och ljudsignaler för att ge feedback till spelare under rörelse. Till exempel kan lägga till dammpartiklar när spelaren springer eller fotstegsljud förstärka känslan av nedsänkning och engagemang.

Gör Godot-spel mer engagerande med spelarrörelser

Flytande och lyhörd rörelsemekanik kan förbättra den övergripande spelarupplevelsen avsevärt. Oavsett om det handlar om att utforska en vidsträckt värld, undvika fiender eller lösa pussel, förbättrar smidiga spelarrörelser fördjupningen och håller spelarna fasta.

Genom att implementera spelarrörelse med GDScript och CharacterBody2D-noden kan du skapa dynamiska och njutbara spelupplevelser. Förmågan att röra sig fritt och interagera med spelvärlden stärker spelare och får dem att känna sig kopplade till den virtuella miljön.