Lær hvordan du lager dine egne lyseffekter for å lyse opp spillene dine.

Dynamisk lys og skygger kan heve den visuelle kvaliteten og spillopplevelsen til Godot-spillene dine. De legger til dybde, atmosfære og realisme, noe som gjør spillverdenen din mer oppslukende og engasjerende.

Med Godots kraftige funksjoner som CanvasModulate og PointLight2D, er det en enkel oppgave å lage og tilpasse dynamisk lys og skygger.

Sette opp Godot-spillet

Før du dykker inn i dynamisk belysning, sett opp et grunnleggende 2D-spill Godot-spillmotoren. Lag en ny scene og legg til en CharacterBody2D for spilleren.

Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

Inne i CharacterBody2D, Legg til en CollisionShape2D med en rektangulær form og en Sprite2D for å representere spillerens karakter. Lag også noen plattformer ved hjelp av StaticBody2D noder.

Implementer nå spillerbevegelsen og kollisjonen med skjermgrensene ved hjelp av GDScript:

extends CharacterBody2D
instagram viewer

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 koden kan spilleren bevege seg til venstre, høyre, opp og ned mens de er begrenset innenfor skjermgrensene.

Gjør resten av scenen mørkere

For å oppnå effekten av dynamisk belysning, må du gjøre resten av scenen mørkere bortsett fra områdene som er opplyst av lyskildene. Du kan gjøre dette ved å bruke Godots CanvasModulate trekk.

extends Node2D

const DARKNESS = 0.7

func _ready():
var canvas_modulate = CanvasModulate.new()
canvas_modulate.color = Color(0, 0, 0, DARKNESS)
add_child(canvas_modulate)

Legg ved dette skriptet til en ny Node2D lagt til ved roten av scenen. De CanvasModulate noden vil bruke et halvt gjennomsiktig svart overlegg, som gjør hele scenen mørkere bortsett fra områder som er opplyst av lys.

Lag en konstant variabel MØRKE, som bestemmer intensiteten av mørket som brukes på scenen. Ved å justere verdien av MØRKE, kan du kontrollere hvor mørk scenen blir når den ikke er opplyst av lys. En høyere verdi vil gi en mørkere scene, mens en lavere verdi vil gjøre scenen mindre mørk.

Kast lysskygge

For å kaste skygger må du sette opp LightOccluder2D noder på hindringer som skal blokkere lys. Hvis du for eksempel har vegger, plattformer eller andre gjenstander som skal kaste skygger, legg til en LightOccluder2D til hver enkelt.

Lage en ny LightOccluder2D node, og juster formen for å matche hindringens form i spillet ditt. Du kan også justere okkludererens egenskaper som polygoner og segmenter for å finjustere oppførselen for skyggekasting.

Legg til rundstrålende lys

Legg nå til en PointLight2D node med en tekstur for å representere lyskilden din. Punktlys sender ut lys i alle retninger og skaper en realistisk lyseffekt.

extends PointLight2D

var light_color = Color(1, 1, 0.8)

func _ready():
energy = 2.5
color = light_color

Du kan tilpasse egenskapene for å kontrollere rekkevidden og fargen på lyset som sendes ut av PointLight2D.

Du kan også lage eller importere en tilpasset lystekstur for å definere formen og utseendet til lyskilden. Det kan være en enkel sirkel eller en mer kompleks form, avhengig av atmosfæren du ønsker å skape.

For å påføre teksturen på PointLight2D node, følg disse trinnene:

  1. Velg PointLight2D node i scenetreet.
  2. I Inspektør-panelet, finn tekstur-egenskapen under Tekstur seksjon.
  3. Klikk på den tomme teksturboksen og velg ønsket lystekstur fra filleseren.

Nå vil lyskilden din sende ut lys med den definerte formen og fargen, og legge til en visuelt tiltalende touch til din dynamiske belysning og skygger.

Inkludert tilleggsfunksjoner

I tillegg til det grunnleggende oppsettet av dynamisk belysning og skygger, kan du introdusere ulike tilleggsfunksjoner for å heve den visuelle appellen og spillopplevelsen ytterligere. Her er noen ideer du bør vurdere:

Lette animasjoner

Gjør lyskildene dine til live ved å legge til animasjoner til dem. Du kan for eksempel lage flimrende lys for fakler eller stearinlys, simulere bevegelsen til et bål eller til og med legge til en pulserende effekt til magiske kuler.

Dag-natt syklus

Implementer en dynamisk dag-natt-syklus som gradvis endrer intensiteten og fargen på lysene etter hvert som tiden i spillet skrider frem. Denne funksjonen kan forbedre fordypningen og skape forskjellige stemninger avhengig av tidspunktet på dagen.

Lys falming

Lag jevne overganger for endringer i lysintensiteten for å unngå brå skift som kan bryte nedsenkingen. Ved gradvis å tone lys inn og ut, kan du oppnå en mer naturlig og visuelt tiltalende effekt.

Dynamiske skygger

I stedet for å bruke statiske skygger, bør du vurdere å legge til dynamiske skygger til bevegelige objekter eller tegn. Du kan gjøre dette ved å bruke ekstra lyskilder som følger karakterenes bevegelser, og gir en illusjon av skyggeoppdateringer i sanntid.

Opphavsrettsfrie lydeffekter

Lydeffekter spiller en avgjørende rolle for å få spillverdenen din til å føles levende og dynamisk. Vurder å innlemme opphavsrettsfrie lydeffekter for å komplettere din dynamiske belysning og skygger.

Beste praksis for dynamisk belysning og skygger

Mens dynamisk lys og skygger kan forbedre spillet ditt betraktelig, kan feil implementering ha en negativ innvirkning på ytelse og visuell kvalitet. Her er noen gode fremgangsmåter du bør huske på:

Optimaliser lyskilder

Begrens antall aktive lyskilder til det minimum som er nødvendig for ønsket visuell effekt. For mye lys kan påvirke ytelsen betydelig, spesielt på lavere enheter.

Bruk Light Baking

For statiske scener eller objekter bør du vurdere å bake lysinformasjonen for å forbedre ytelsen. Lett baking forhåndsberegner lysdataene, og reduserer behovet for sanntidsberegninger under spilling.

Velg enkle okkludere

Ved oppsett LightOccluder2D noder, velg enkle former der det er mulig. Komplekse okkluderinger med mange hjørner kan føre til ytelsesproblemer. Bruk enkle polygoner eller linjesegmenter for okkludere når det er mulig.

Nedskjæring og lagdeling

Benytt Godots synlighet og lagdelingssystem for å sikre at lys og skygger kun beregnes for synlige områder. Å fjerne lys og skygger utenfor skjermen kan forbedre ytelsen betraktelig.

Ved å følge disse beste fremgangsmåtene og nøye implementere tilleggsfunksjoner, kan du skape slående og fengslende dynamisk lys og skygger som hever den generelle kvaliteten til plattformspillet ditt.

Gjør Godot-spill mer engasjerende med dynamisk belysning og skygger

Dynamisk lys og skygger blåser liv i spillverdenen din. De skaper et mer oppslukende og atmosfærisk miljø, og trekker spillere dypere inn i spillopplevelsen. Samspillet mellom lys og skygge kan fremkalle følelser, sette tonen og forbedre den visuelle historiefortellingen i spillet ditt.

Enten det er et mystisk mørkt fangehull eller en rolig måneskinn natt, beriker dynamisk belysning spillingen og etterlater et varig inntrykk på spillerne.