Lær hvordan du kontrollerer spillets visningsport med panorering, zooming og skaleringshandlinger.
Et godt designet kamerasystem kan bidra til å fordype spillere i spillverdenen og gi en bedre følelse av plassering. Kameraet fungerer som øynene til spilleren, og lar dem navigere og samhandle med spillverdenen.
Å lage et kamerasystem i Godot er enkelt, men likevel kraftig. Du kan enkelt sette opp kameraet til å følge spilleren rundt, begrense bevegelsene til spillområdet, og til og med legge til dynamisk zooming og skalering basert på hendelsene i spillet.
Opprette et enkelt spill
Før du starter, må du lage en 2D-spillverden og en karakter i din Godot spillmotor som kameraet kan følge.
Lag en ny 2D-scene og legg til en CharacterBody2D node. Dette vil fungere som spillerkarakteren vår. Inne i CharacterBody2D legger du til en CollisionShape2D og sett formen til RectangleShape2D å gi spillerens fysiske tilstedeværelse i verden.
Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.
I CharacterBody2D legger du også til en Sprite2D node og tilordne spillerens sprite-bilde til den. Lag et nytt skript knyttet til CharacterBody2D-noden og legg til følgende kode:
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 denne koden kan spillerkarakteren nå bevege seg i alle fire retninger og vil kollidere med plattformene.
Implementering av et følgekamerasystem
Neste steg er å lage et kamera som følger spillerens bevegelser. Legg til en Kamera 2D node som et barn av deg CharacterBody2D node. Dette sikrer at kameraet alltid følger spilleren. For å gjøre bevegelsen jevnere, aktiver posisjonsutjevningsegenskapen til Kamera 2D node.
$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true
Implementering av kameragrenser og begrensninger
Det er ofte viktig å begrense spillerens sikt til spillområdet. Hvis du ikke håndterer dette riktig, kan kameraet imidlertid avsløre områder som er utenfor spillets omfang. Disse kan inkludere mellomrom eller ufullstendige områder.
Godot gir en enkel måte å sette kameragrenser og begrense bevegelsene innenfor spillområdet.
I Kamera 2D nodeegenskaper, er det fire variabler: limit_left, limit_top, limit_right, og limit_bottom. Disse bestemmer kameraets grenser. Du kan angi disse verdiene i henhold til størrelsen på spillverdenen din.
$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height
Erstatte your_game_area_width og ditt_spillområde_høyde med bredden og høyden til spillverdenen din. Dette skriptet begrenser effektivt kameraet innenfor ønsket område, og gir en ren og fokusert spillopplevelse for spilleren.
Håndtering av kamerazooming og skalering
Dynamisk zooming og skalering kan være med på å skape virkningsfulle øyeblikk i spillet. For eksempel vil du kanskje zoome inn på spillerkarakteren under en kraftig handling eller zoome ut for å avsløre en stor fiende eller en panoramautsikt over spillverdenen.
Godot gjør zooming og skalering enkelt med zoom eiendommen til Kamera 2D node. Denne egenskapen er en Vector2, med (1, 1) som standard zoomnivå. Høyere verdier vil zoome ut, slik at de viste objektene ser mindre ut, mens lavere verdier vil zoome inn, slik at objektene ser større ut.
For å zoome inn kan du bruke:
$Camera2D.zoom = Vector2(0.7, 0.7)
Og for å tilbakestille zoomen, bruk:
$Camera2D.zoom = Vector2(1, 1)
Verdiene du sender til Vector2() bestemmer zoomnivået på X- og Y-aksene. En zoomverdi på (0,7, 0,7) betyr at kameraet vil zoome inn, mens en verdi på (1,5, 1,5) vil zoome ut kameraet.
Du bør vanligvis beholde samme verdi for begge aksene for å opprettholde sideforholdet, men du kan eksperimentere med forskjellige verdier for å oppnå unike effekter.
Inkludert tilleggsfunksjoner
Når du lager et kamerasystem for spillet ditt, er det mange tilleggsfunksjoner du kan inkludere for å forbedre opplevelsen.
Kameraet rister
En vanlig effekt som brukes i mange spill, spesielt plattformspill, er kamerarystelsen. Dette brukes vanligvis til å formidle innvirkning eller intensitet i visse øyeblikk i spillet, som en eksplosjon eller en karakters kraftige angrep.
Du kan enkelt legge til denne funksjonen i Godot ved å lage en riste() funksjon. Du kan spesifisere varigheten og intensiteten til risteeffekten i henhold til den spesifikke hendelsen i spillet.
Lyder kan i stor grad forbedre følelsen av sted og bevegelse i et spill. Dette kan være så enkelt som å spille en swoosh lyd effekt når kameraet raskt beveger seg eller panorerer, eller så komplisert som å endre volumet eller tonehøyden til omgivelseslyder eller musikkspor basert på kameraets plassering eller zoomnivå.
Det kan for eksempel være lurt å senke volumet til en sang mens kameraet zoomer ut for å gi en følelse av avstand.
Dynamisk belysning
Du kan også knytte dynamiske lyseffekter til kameraet. Når kameraet ditt beveger seg rundt i spillverdenen, kan du endre lysforholdene for å reflektere de nye miljøene eller for å fremheve bestemte områder eller objekter.
Dette kan inkludere ting som å gradvis mørkne scenen mens kameraet dykker ned i en hule, eller fremheve et nøkkelobjekt med en spotlight.
Kameraovergangseffekter
Du kan lage ulike overgangseffekter når du bytter mellom kameraer. Dette kan være et enkelt kutt hvor visningen hopper øyeblikkelig fra ett kamera til et annet eller en fade hvor visningen gradvis går over fra ett kamera til et annet.
Du kan bruke mer komplekse overganger, som en wipe, lysbilde eller iris, med ekstra koding og animasjon.
Beste praksis for å legge til kamerasystem
Når du legger til et kamerasystem i spillet ditt, er det flere beste fremgangsmåter du bør huske på for å sikre best mulig spillopplevelse.
Unngå brå kamerabevegelser
Plutselige endringer i kameraperspektivet kan være desorienterende for spillere og kan forstyrre spillingen. Sikt alltid på jevne kameraoverganger for å opprettholde innlevelsen.
Begrens kamerarystelser
Mens en kamerarystelse kan gi innvirkning på visse hendelser, kan for mye gjøre spillet vanskelig å følge og ubehagelig å spille. Bruk denne effekten med måte og med måte.
Test forskjellige zoomnivåer
Ulike spill og forskjellige situasjoner i et spill kan kreve forskjellige zoomnivåer. Test grundig for å finne det mest passende zoomnivået for hver situasjon.
Vurder kameragrensene nøye
Kameragrensene bør settes nøye for å passe utformingen av nivåene dine. Du vil ikke at spilleren skal se utenfor spillverdenen eller gå glipp av viktige elementer utenfor skjermen.
Prioriter spilleropplevelse
Hovedmålet med kamerasystemet bør alltid være å forbedre spilleropplevelsen. Enten det er å gi den beste oversikten over handlingen, fremheve viktige øyeblikk eller hjelpe spilleren med å navigere i miljøet, skal kameraet alltid bidra til en bedre spillopplevelse.
Gjør Godot-spill mer engasjerende med kamerasystemet
Et godt implementert kamerasystem kan forbedre den generelle spillopplevelsen. Det kan understreke handlingen, hjelpe til med historiefortelling og gi en mer oppslukende opplevelse.
Ved å kontrollere hva spilleren ser og når de ser det, kan du guide deres reise gjennom spillverdenen og gjøre spillingen mer dynamisk og engasjerende.