Hvordan implementere en dag-natt-syklus i Godot

En dag-natt-syklus kan legge til et oppslukende element til spillene dine, legge til variasjon til det visuelle og skape interessant mekanikk. Spill som Minecraft, Animal Crossing og Don’t Starve bruker denne teknikken effektivt, og det er en du kan vurdere å legge til i dine egne spill, spesielt de med et sanntidselement.

Heldigvis, i Godot 4, er det enklere enn noen gang å oppnå en dag-natt-syklus.

Sette opp Godot-spillet

Før du dykker inn i implementeringen av dag-natt-syklusen, sett opp grunnlaget for spillet ditt. Start med å lage et nytt 2D-prosjekt i Godot 4. Sett opp prosjektet med de nødvendige prosjektinnstillingene.

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

Lag nå en spillerkarakter. Legg til en CharacterBody2D i scenen din. Inni den legger du til en CollisionShape2D med en rektangelform og en Sprite2D. Dette vil representere karakteren din visuelt.

For å la spilleren bevege seg, kan du bruke følgende GDScript-kode. Fest dette skriptet til karakternoden din:

 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)

Denne koden lar spilleren bevege seg til venstre, høyre, opp og ned ved hjelp av piltastene. Du kan også legge til noen fiender som spilleren din kan unngå. Bruk StaticBody2D-noder for disse fiendene og juster deres former og posisjoner deretter.

  12 beste online lydkutter- og trimmerverktøy og apper

Legg til en timer for dag- og nattsyklusen

For å lage en dag-natt-syklus trenger du en timer som går kontinuerlig, vekslende mellom dag- og nattfaser. Denne tidtakeren vil være ansvarlig for å spore tidens gang i spillet ditt.

Legg til en Timer-node til Godot-scenen din. Du kan gjøre dette ved å høyreklikke i Scene-panelet, velge Add Node, og deretter søke etter Timer i nodebiblioteket.

Gi nytt navn til Timer-noden til noe meningsfylt som DayNightTimer for klarhet. Konfigurer Timer-nodens egenskaper i Inspektør-panelet. Spesifikt, sett Wait Time-egenskapen til 0 (dette er den første forsinkelsen før tidtakeren starter) og kontroller One Shot-egenskapen slik at tidtakeren gjentar seg.

Legg nå til en GDScript-kode som styrer dag-natt-syklusen:

 extends Node2D

var day_duration = 30
var night_duration = 30

var is_day = true

func _ready():
    
    $DayNightTimer.start()

func _on_DayNightTimer_timeout():
    if is_day:
        
        $DayNightTimer.start(day_duration)
        is_day = false

        
    else:
        
        $DayNightTimer.start(night_duration)
        is_day = true

        

I _ready-funksjonen, start DayNightTimer når scenen laster for å kickstarte dag-natt-syklusen. Funksjonen _on_DayNightTimer_timeout vil kjøre hver gang tidtakeren når null, som er når det er på tide å skifte mellom dag og natt.

Ved å følge disse trinnene vil du ha en funksjonell dag-natt-timer som går mellom dag og natt, slik at du kan legge til dynamiske spillelementer og visuelle endringer i Godot-spillet ditt basert på tiden på dagen.

  7 typer løsepengevare og hvordan du kan redde deg selv fra dem

Tilpasning av bakgrunnen for dag og natt

For å komplettere dag-natt-syklusen din, trenger du en måte å visuelt representere overgangene mellom dag og natt. Du kan bruke en innebygd ColorRect-node for å lage en passende bakgrunn for både dag og natt. Denne tilnærmingen gir jevnere overganger og større kontroll over det visuelle.

Legg til en ColorRect-node i Godot-scenen. Denne noden vil fungere som bakgrunnen din som endrer farge for å representere dag og natt. Gi nytt navn til ColorRect-noden til noe meningsfylt som BackgroundRect. Plasser det som bakgrunnslaget, og sørg for at det dekker hele visningsporten.

I Inspektør-panelet setter du fargeegenskapen til den opprinnelige bakgrunnsfargen, som skal representere dagtid. Du kan for eksempel bruke Color(0.5, 0.5, 0.8) for en lyseblå daghimmel.

Oppdater nå GDScript-koden for å fungere med ColorRect-noden:

 func _on_day_night_timer_timeout():
    if is_day:
        
        $DayNightTimer.start(day_duration)
        is_day = false

        

        
        $BackgroundRect.color = Color(0.5, 0.5, 0.8)
    else:
        
        $DayNightTimer.start(night_duration)
        is_day = true

        

        
        $BackgroundRect.color = Color(0, 0, 0)

Oppdater fargen på BackgroundRect-noden for å gjenspeile tiden på dagen. Sett den for eksempel til svart når du går over til natt, og skaper en mørk bakgrunn. Når du går over til dag, sett den til lyseblå.

  6 AI Shopping Assistant-verktøy for å hjelpe deg med å handle klokt

Lydeffekter for dag-natt-syklusen

Lydeffekter kan spille en avgjørende rolle for å forbedre fordypningen og realismen til dag-natt-syklusen din i Godot. De gir spillere auditive signaler, noe som gjør overgangen mellom dag og natt mer fengslende. Du kan enkelt legge til lydeffekter i Godot-spillet ditt.

Før du begynner, sørg for at du har lydressurser (lydfiler) som representerer dag- og nattlyder. Du kan for eksempel ha fuglekvitter for dagen og sirisser eller ugletuter for natten.

I Godot-scenen din legger du til to AudioStreamPlayer2D-noder og gir dem et passende navn. Du kan navngi dem noe som $DaytimeSounds og $NighttimeSounds.

Oppdater nå GDScript-koden for å administrere lydovergangene mellom dag og natt:

 func _on_day_night_timer_timeout():
    if is_day:
        
        $DayNightTimer.start(day_duration)
        is_day = false
     
        
        $NighttimeSounds.stop()
        $DaytimeSounds.play()
         
    else:
        
        $DayNightTimer.start(night_duration)
        is_day = true

        
        $DaytimeSounds.stop()
        $NighttimeSounds.play()

Når dag-natt-timeren går ut, sjekker denne koden for å se hvilken fase den skal gå over til og spiller passende lyder som passer.

Tilpass gjerne dine opphavsrettsfrie lydeffekter for å matche temaet og atmosfæren i spillet ditt. Du kan også legge flere lydspor i lag eller bruke lydeffekter (reverb, ekko osv.) for å skape en rikere auditiv opplevelse.

Gjør Godot-spillene dine mer engasjerende med en dag-natt-syklus

Implementering av en dag-natt-syklus i Godot-spillet ditt kan forbedre spillerens fordypning og engasjement betraktelig. Det gir dybde til spillverdenen din, introduserer dynamiske spillelementer og gir mulighet for kreativ historiefortelling.

Husk å skreddersy dag-natt-syklusen til spillets unike tema og mekanikk, og ikke nøl med å eksperimentere med forskjellige visuelle effekter og spilleffekter for å skape en virkelig fengslende spillopplevelse.