Spillerbevægelser spiller en afgørende rolle i at gøre Godot-spil mere engagerende. Lær hvordan du implementerer det.

Implementering af spillerbevægelse er et grundlæggende aspekt ved at skabe engagerende spil i Godot Game Engine. Spillerbevægelser giver brugerne mulighed for at kontrollere karakterer, udforske spilverdener og interagere med forskellige elementer i spilmiljøet.

Opsætning af Godot-spillet

For at komme i gang skal du oprette et nyt 2D-projekt i Godot Game Engine. Følg derefter disse trin for at tilføje spillerbevægelse til dit spil

Opret en ny scene ved at højreklikke på Filsystem panel, og vælg derefter Ny mappe og navngive den Scener. Inde i Scener mappe, højreklik og opret en ny 2D-scene. Gem det med et passende navn, f.eks. Player.tscn.

Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.

Tilføj en CharacterBody2D node til scenen ved at klikke på Tilføj node knappen og vælge CharacterBody2D fra nodebiblioteket.

instagram viewer

Med CharacterBody2D node valgt, klik på Tilføj Child Node knap for at tilføje en CollisionShape2D. Juster formen på CollisionShape2D for at matche spillerens dimensioner. Du kan bruge en rektangelform for nemheds skyld.

Tilføj derefter en Sprite2D komponent til CharacterBody2D node og vælg en passende sprite til din spillerkarakter.

Tilføjelse af spillerbevægelse ved hjælp af tastaturinput

Nu kan du tilføje spillerbevægelse ved hjælp af tastaturinput til Player.gd manuskript.

Forlæng CharacterBody2D node, indstil bevægelseshastigheden og få input fra piletasterne (ui_left, ui_right, ui_up, ui_down). Beregn bevægelseshastigheden baseret på inputretningen, normaliser den, og flyt derefter afspilleren ved hjælp af flytte_og_kollidere funktion i _fysikproces metode.

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)

Tilføjelse af rotation

For at få afspilleren til at vende bevægelsesretningen kan du tilføje rotation til din afspiller. Opdater Player.gd script som følger:

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

Spilleren vil rotere i bevægelsesretningen. Rotationshastigheden kan justeres ved hjælp af rotation_speed variabel.

Tilføjelse af spillerbevægelse ved hjælp af museindgang

Nu kan du implementere spillerbevægelse ved at bruge museindtastning til at flytte afspilleren til positionen for museklikket eller få afspilleren til at vende mod musemarkøren:

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 denne kode vil spilleren bevæge sig mod positionen for museklikket hver gang klik handling udløses. Spillerens hastighed kan styres ved hjælp af fart variabel.

Derudover kan du også implementere musebaseret rotation som følger:

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 denne version vil spillerens sprite vende direkte mod musemarkørens position.

Inklusiv yderligere funktioner

Selvom den grundlæggende spillerbevægelse er afgørende for de fleste spil, kan tilføjelse af yderligere funktioner tage din spillers oplevelse til næste niveau. Her er nogle spændende funktioner, du kan overveje at implementere i dit spil for at forbedre spillerbevægelsen:

Hoppe

Implementering af springmekanik giver spillerne mulighed for at navigere forhindringer, nå højere platforme og tilføje et ekstra lag af interaktivitet til spilverdenen. Du kan styre springhøjden og tilføje animationer for at gøre det visuelt tiltalende.

Dash eller Sprint

En bindestreg-evne gør det muligt for spilleren at bevæge sig hurtigt i en kort burst, hvilket kan være nyttigt til at undvige fjender eller krydse udfordrende områder. Denne funktion tilføjer et dynamisk element til gameplayet og forbedrer spillerens følelse af kontrol.

Vægglidning og klatring

Introduktion af vægglide- og klatremekanik gør det muligt for spillere at interagere med lodrette overflader. Spillere kan glide ned ad vægge, udføre vægspring eller endda skalere visse forhindringer. Denne funktion er især populær i platformspil.

Platform mekanik

Til platformspil, kan du inkorporere tyngdekraft, acceleration og deceleration for at skabe en jævn og realistisk bevægelsesoplevelse. Finjustering af denne mekanik kan få spillet til at føles mere poleret og underholdende.

Husk, at nøglen til succesfuld implementering af yderligere funktioner ligger i at balancere og integrere dem problemfrit i gameplayet. Hver funktion skal komplementere kernespillerens bevægelsesmekanik og bidrage til den overordnede spiloplevelse.

Bedste praksis for tilføjelse af spillerbevægelse

Når det kommer til at implementere spillerbevægelse i dit Godot-spil, skal du følge disse bedste praksisser vil ikke kun gøre din kode renere og mere effektiv, men også bidrage til en bedre spiller erfaring:

Særskilte bekymringer

Organiser din spillerbevægelseslogik i separate funktioner eller scripts. Lav for eksempel et script til håndtering af spillerinput, et andet til karakterbevægelser og muligvis et mere til håndtering af animationer.

Adskillelse af bekymringer gør din kode mere modulær og nemmere at vedligeholde, samt fremmer bedre samarbejde mellem teammedlemmer.

Brug Delta Time

Når du beregner bevægelse, skal du altid gange dine værdier med deltatiden (delta) for at sikre jævn bevægelse på tværs af forskellige billedhastigheder. Delta-tid repræsenterer den tid, der er forløbet siden sidste billede og sikrer, at afspilleren bevæger sig med en konstant hastighed, uanset enhedens ydeevne.

Begræns bevægelseshastighed

Indstil maksimale bevægelseshastigheder for din afspiller for at undgå utilsigtede højhastighedsbevægelser. Denne begrænsning kan være nyttig til at forhindre spillere i at bryde spillets fysik eller støde på problemer med kollisionsdetektion.

Overvej fysiklag og kollisionsmasker

Godot giver dig mulighed for at konfigurere kollisionslag og masker til forskellige objekter i dit spil. Korrekt indstilling af disse lag og masker giver dig mulighed for at kontrollere, hvilke objekter der kan interagere med hinanden under bevægelse. For eksempel vil du måske have, at spilleren kolliderer med faste genstande, men ikke passerer gennem ikke-faste genstande.

Tilføj visuel og lydfeedback

Implementer visuelle effekter og lydsignaler for at give feedback til spillere under bevægelse. For eksempel kan tilføjelse af støvpartikler, når afspilleren løber, eller fodtrinslyd øge følelsen af ​​fordybelse og engagement.

Gør Godot-spil mere engagerende med spillerbevægelser

Flydende og responsiv bevægelsesmekanik kan forbedre den overordnede spilleroplevelse markant. Uanset om det drejer sig om at udforske en enorm verden, undvige fjender eller løse gåder, forbedrer jævne spillerbevægelser fordybelsen og holder spillerne hooked.

Ved at implementere spillerbevægelse ved hjælp af GDScript og CharacterBody2D-noden kan du skabe dynamiske og fornøjelige gameplay-oplevelser. Evnen til at bevæge sig frit og interagere med spilverdenen styrker spillerne og får dem til at føle sig forbundet til det virtuelle miljø.