Lær, hvordan du styrer dit spils viewport med panorerings-, zoom- og skaleringshandlinger.

Et veldesignet kamerasystem kan være med til at fordybe spillere i spilverdenen og give en bedre følelse af placering. Kameraet fungerer som spillerens øjne, hvilket gør dem i stand til at navigere og interagere med spilverdenen.

At skabe et kamerasystem i Godot er enkelt, men alligevel kraftfuldt. Du kan nemt indstille kameraet til at følge spilleren rundt, begrænse dens bevægelser til spilområdet og endda tilføje dynamisk zoom og skalering baseret på begivenhederne i spillet.

Oprettelse af et simpelt spil

Før du starter, skal du skabe en 2D-spilverden og en karakter i din Godot spilmotor som kameraet kan følge.

Opret en ny 2D-scene og tilføj en CharacterBody2D node. Dette vil fungere som vores spillerkarakter. Tilføj en inde i CharacterBody2D CollisionShape2D og sæt dens form til RectangleShape2D at give spillerens fysiske tilstedeværelse i verden.

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

instagram viewer

Tilføj også en inde i CharacterBody2D Sprite2D node og tildel dit spillersprite-billede til det. Opret et nyt script knyttet til CharacterBody2D-knuden, og tilføj følgende kode:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if Input.is_action_pressed('ui_up'):
velocity.y -= 1

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

Med denne kode kan spillerkarakteren nu bevæge sig i alle fire retninger og vil kollidere med platformene.

Implementering af et Follow Camera System

Næste trin er at skabe et kamera, der følger spillerens bevægelser. Tilføj en Kamera 2D node som et barn af din CharacterBody2D node. Dette sikrer, at kameraet altid følger afspilleren. For at gøre bevægelsen jævnere skal du aktivere positionsudjævningsegenskaben for Kamera 2D node.

$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true

Implementering af kameragrænser og begrænsninger

Det er ofte vigtigt at begrænse spillerens udsyn til spilleområdet. Hvis du ikke håndterer dette ordentligt, kan kameraet dog afsløre områder, der er uden for spillets rammer. Disse kan omfatte mellemrum eller ufuldstændige områder.

Godot giver en nem måde at sætte kameragrænser på og begrænse dets bevægelser inden for spilområdet.

I Kamera 2D node egenskaber, er der fire variabler: limit_left, limit_top, limit_right, og limit_bottom. Disse bestemmer kameraets grænser. Du kan indstille disse værdier i henhold til størrelsen på din spilverden.

$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height

Erstatte dit_spilareal_bredde og dit_spilareal_højde med bredden og højden af ​​din spilverden. Dette script begrænser effektivt kameraet inden for det ønskede område, hvilket giver spilleren en ren og fokuseret spiloplevelse.

Håndtering af kamerazoom og skalering

Dynamisk zoom og skalering kan være medvirkende til at skabe effektfulde øjeblikke i spillet. For eksempel vil du måske zoome ind på spillerkarakteren under en kraftfuld handling eller zoome ud for at afsløre en stor fjende eller et panoramaudsigt over spilverdenen.

Billedkredit: Xbox Game Studios/orthegame.com

Godot gør det nemt at zoome og skalere med zoom ejendom af Kamera 2D node. Denne egenskab er en Vector2, hvor (1, 1) er standard zoomniveau. Højere værdier vil zoome ud, hvilket får de viste objekter til at se mindre ud, mens lavere værdier vil zoome ind, hvilket får objekter til at se større ud.

For at zoome ind kan du bruge:

$Camera2D.zoom = Vector2(0.7, 0.7)

Og for at nulstille zoomen, brug:

$Camera2D.zoom = Vector2(1, 1)

De værdier, du sender til Vector2() bestemmer zoomniveauet på X- og Y-akserne. En zoomværdi på (0,7, 0,7) betyder, at kameraet zoomer ind, mens en værdi på (1,5, 1,5) vil zoome kameraet ud.

Du bør normalt beholde den samme værdi for begge akser for at bevare billedformatet, men du kan eksperimentere med forskellige værdier for at opnå unikke effekter.

Inklusiv yderligere funktioner

Når du opretter et kamerasystem til dit spil, er der adskillige ekstra funktioner, du kan inkorporere for at forbedre oplevelsen.

Kamera ryster

En almindelig effekt, der bruges i mange spil, især platformspil, er kamerarysten. Dette bruges typisk til at formidle påvirkning eller intensitet i bestemte øjeblikke i spillet, såsom en eksplosion eller en karakters kraftfulde angreb.

Du kan nemt tilføje denne funktion i Godot ved at oprette en ryste() fungere. Du kan angive varigheden og intensiteten af ​​rysteeffekten i henhold til den specifikke begivenhed i spillet.

Lyde kan i høj grad forbedre følelsen af ​​sted og bevægelse i et spil. Dette kan være så simpelt som at spille en swoosh lyd effekt når kameraet hurtigt bevæger sig eller panorerer, eller så komplekst som at ændre lydstyrken eller tonehøjden for omgivende lyde eller musiknumre baseret på kameraets placering eller zoomniveau.

For eksempel vil du måske sænke lydstyrken på en sang, når kameraet zoomer ud for at give en følelse af afstand.

Dynamisk belysning

Du kan også knytte dynamiske lyseffekter til dit kamera. Når dit kamera bevæger sig rundt i spilverdenen, kan du ændre lysforholdene for at afspejle de nye miljøer eller for at fremhæve bestemte områder eller objekter.

Dette kunne omfatte ting som gradvist at gøre scenen mørkere, mens kameraet dykker ned i en hule, eller fremhæve et nøgleobjekt med et spotlys.

Kameraovergangseffekter

Du kan oprette forskellige overgangseffekter, når du skifter mellem kameraer. Dette kan være et simpelt snit, hvor visningen springer øjeblikkeligt fra et kamera til et andet eller en fade, hvor visningen gradvist skifter fra et kamera til et andet.

Du kan bruge mere komplekse overgange, såsom en wipe, dias eller iris, med yderligere kodning og animation.

Bedste praksis for tilføjelse af kamerasystem

Når du tilføjer et kamerasystem til dit spil, er der adskillige bedste fremgangsmåder, du skal huske på for at sikre den bedst mulige spiloplevelse.

Undgå pludselige kamerabevægelser

Pludselige skift i kameraperspektivet kan være desorienterende for spillere og kan forstyrre gameplayet. Sigt altid efter jævne kameraovergange for at bevare fordybelsen.

Begræns kamerarystelser

Mens en kamerarystelse kan tilføje indflydelse til visse begivenheder, kan for meget gøre spillet svært at følge og ubehageligt at spille. Brug denne effekt sparsomt og med måde.

Test forskellige zoomniveauer

Forskellige spil og forskellige situationer i et spil kan kræve forskellige zoomniveauer. Test grundigt for at finde det mest passende zoomniveau for hver situation.

Overvej nøje kameragrænser

Kameragrænser bør omhyggeligt indstilles, så de passer til designet af dine niveauer. Du ønsker ikke, at spilleren skal se uden for spilverdenen eller gå glip af vigtige elementer uden for skærmen.

Prioriter spilleroplevelse

Hovedmålet med kamerasystemet bør altid være at forbedre spilleroplevelsen. Uanset om det er at give det bedste overblik over handlingen, fremhæve vigtige øjeblikke eller hjælpe spilleren med at navigere rundt i omgivelserne, skal kameraet altid bidrage til en bedre spiloplevelse.

Gør Godot-spil mere engagerende med kamerasystemet

Et velimplementeret kamerasystem kan forbedre den samlede spiloplevelse. Det kan understrege handlingen, hjælpe med historiefortælling og give en mere fordybende oplevelse.

Ved at kontrollere, hvad spilleren ser, og hvornår de ser det, kan du guide deres rejse gennem spilverdenen og gøre gameplayet mere dynamisk og engagerende.