Lär dig hur du styr spelets visningsport med panorering, zoomning och skalningsåtgärder.
Ett väldesignat kamerasystem kan hjälpa till att fördjupa spelarna i spelvärlden och ge en bättre platskänsla. Kameran fungerar som spelarens ögon, vilket gör det möjligt för dem att navigera och interagera med spelvärlden.
Att skapa ett kamerasystem i Godot är enkelt men ändå kraftfullt. Du kan enkelt ställa in kameran för att följa spelaren runt, begränsa dess rörelser till spelområdet och till och med lägga till dynamisk zoomning och skalning baserat på händelserna i spelet.
Skapa ett enkelt spel
Innan du börjar måste du skapa en 2D-spelvärld och en karaktär i din Godot spelmotor som kameran kan följa.
Skapa en ny 2D-scen och lägg till en CharacterBody2D nod. Detta kommer att fungera som vår spelarkaraktär. Lägg till en inuti CharacterBody2D CollisionShape2D och ställ in dess form till RectangleShape2D för att ge spelarens fysiska närvaro i världen.
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 också till en inuti CharacterBody2D Sprite2D nod och tilldela din spelare sprite-bild till den. Skapa ett nytt skript kopplat till CharacterBody2D-noden och lägg till följande kod:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
Med denna kod kan spelarkaraktären nu röra sig i alla fyra riktningar och kommer att kollidera med plattformarna.
Implementering av ett Follow Camera System
Nästa steg är att skapa en kamera som följer spelarens rörelser. Lägg till en Kamera 2D nod som ett barn till din CharacterBody2D nod. Detta säkerställer att kameran alltid följer spelaren. För att göra rörelsen mjukare, aktivera positionsutjämningsegenskapen för Kamera 2D nod.
$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true
Implementera kameragränser och begränsningar
Det är ofta viktigt att begränsa spelarens sikt till spelområdet. Om du inte hanterar detta på rätt sätt kan kameran dock avslöja områden som ligger utanför spelets ram. Dessa kan inkludera utrymmen eller ofullständiga områden.
Godot ger ett enkelt sätt att sätta kameragränser och begränsa dess rörelser inom spelområdet.
I den Kamera 2D nodegenskaper finns det fyra variabler: limit_left, limit_top, limit_right, och limit_bottom. Dessa bestämmer kamerans gränser. Du kan ställa in dessa värden efter din spelvärldsstorlek.
$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height
Byta ut your_game_area_width och din_spelarea_höjd med bredden och höjden på din spelvärld. Detta skript begränsar effektivt kameran inom det önskade området, vilket ger en ren och fokuserad spelupplevelse för spelaren.
Hantera kamerazoomning och skalning
Dynamisk zoomning och skalning kan vara avgörande för att skapa effektfulla ögonblick i spelet. Du kanske till exempel vill zooma in på spelarkaraktären under en kraftfull action eller zooma ut för att avslöja en stor fiende eller en panoramavy av spelvärlden.
Godot gör det enkelt att zooma och skala med zoom egendom av Kamera 2D nod. Den här egenskapen är en Vector2, där (1, 1) är standardzoomnivån. Högre värden zoomar ut, vilket gör att de visade objekten ser mindre ut, medan lägre värden zoomar in, vilket gör att objekten ser större ut.
För att zooma in kan du använda:
$Camera2D.zoom = Vector2(0.7, 0.7)
Och för att återställa zoomen, använd:
$Camera2D.zoom = Vector2(1, 1)
Värdena du skickar till Vector2() bestämmer zoomnivån på X- och Y-axlarna. Ett zoomvärde på (0,7, 0,7) betyder att kameran zoomar in, medan ett värde på (1,5, 1,5) skulle zooma ut kameran.
Du bör vanligtvis behålla samma värde för båda axlarna för att bibehålla bildförhållandet, men du kan experimentera med olika värden för att uppnå unika effekter.
Inklusive ytterligare funktioner
När du skapar ett kamerasystem för ditt spel finns det många ytterligare funktioner som du kan införliva för att förbättra upplevelsen.
Kamera skakar
En vanlig effekt som används i många spel, speciellt plattformsspel, är kameraskakningen. Detta används vanligtvis för att förmedla effekt eller intensitet under vissa ögonblick i spelet, som en explosion eller en karaktärs kraftfulla attack.
Du kan enkelt lägga till den här funktionen i Godot genom att skapa en skaka() fungera. Du kan specificera varaktigheten och intensiteten för skakeffekten enligt den specifika händelsen i spelet.
Ljud kan avsevärt förstärka känslan av plats och rörelse i ett spel. Detta kan vara så enkelt som att spela en swoosh ljudeffekt när kameran snabbt rör sig eller panorerar, eller så komplicerat som att ändra volymen eller tonhöjden för omgivande ljud eller musikspår baserat på kamerans plats eller zoomnivå.
Du kanske till exempel vill sänka volymen på en låt när kameran zoomar ut för att ge en känsla av avstånd.
Dynamisk belysning
Du kan också knyta dynamiska ljuseffekter till din kamera. När din kamera rör sig runt i spelvärlden kan du ändra ljusförhållandena för att återspegla de nya miljöerna eller för att markera specifika områden eller objekt.
Detta kan inkludera saker som att gradvis mörkna scenen när kameran gräver ner i en grotta eller att markera ett nyckelobjekt med en spotlight.
Kameraövergångseffekter
Du kan skapa olika övergångseffekter när du växlar mellan kameror. Detta kan vara ett enkelt klipp där vyn hoppar direkt från en kamera till en annan eller en toning där vyn gradvis övergår från en kamera till en annan.
Du kan använda mer komplexa övergångar, som en wipe, dia eller iris, med ytterligare kodning och animering.
Bästa metoder för att lägga till kamerasystem
När du lägger till ett kamerasystem i ditt spel finns det flera bästa praxis att tänka på för att säkerställa bästa möjliga spelupplevelse.
Undvik plötsliga kamerarörelser
Plötsliga förändringar i kameraperspektivet kan vara förvirrande för spelare och kan störa spelet. Sträva alltid efter mjuka kameraövergångar för att behålla nedsänkningen.
Begränsa kameraskakning
Medan en kameraskakning kan ge effekter till vissa händelser, kan för mycket göra spelet svårt att följa och obekvämt att spela. Använd denna effekt sparsamt och med måtta.
Testa olika zoomnivåer
Olika spel och olika situationer inom ett spel kan kräva olika zoomnivåer. Testa noggrant för att hitta den mest lämpliga zoomnivån för varje situation.
Tänk noga på kameragränserna
Kameragränserna bör vara genomtänkta för att passa designen på dina nivåer. Du vill inte att spelaren ska se utanför spelvärlden eller missa viktiga element utanför skärmen.
Prioritera spelarupplevelse
Huvudmålet med kamerasystemet bör alltid vara att förbättra spelarupplevelsen. Oavsett om det handlar om att ge den bästa bilden av händelserna, betona viktiga ögonblick eller hjälpa spelaren att navigera i miljön, ska kameran alltid bidra till en bättre spelupplevelse.
Gör Godot-spel mer engagerande med kamerasystemet
Ett välimplementerat kamerasystem kan förbättra den övergripande spelupplevelsen. Det kan framhäva handlingen, hjälpa till i berättandet och ge en mer uppslukande upplevelse.
Genom att kontrollera vad spelaren ser och när de ser det kan du guida deras resa genom spelvärlden och göra spelet mer dynamiskt och engagerande.