Sådan implementeres en dag-nat-cyklus i Godot

En dag-nat-cyklus kan tilføje et fordybende element til dine spil, tilføje variation til det visuelle og skabe interessant mekanik. Spil som Minecraft, Animal Crossing og Don’t Starve bruger denne teknik effektivt, og det er en, du kan overveje at tilføje til dine egne spil, især dem med et realtidselement.

Heldigvis, i Godot 4, er det nemmere end nogensinde at opnå en dag-nat-cyklus.

Opsætning af Godot-spillet

Inden du dykker ned i implementeringen af ​​dag-nat-cyklus, skal du oprette grundlaget for dit spil. Start med at oprette et nyt 2D-projekt i Godot 4. Opsæt dit projekt med de nødvendige projektindstillinger.

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

Opret nu en spillerkarakter. Tilføj en CharacterBody2D i din scene. Indeni den skal du tilføje en CollisionShape2D med en rektangelform og en Sprite2D. Dette vil repræsentere din karakter visuelt.

For at tillade afspilleren at bevæge sig, kan du bruge følgende GDScript-kode. Vedhæft dette script til din karakternode:

 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 kode giver spilleren mulighed for at flytte til venstre, højre, op og ned ved hjælp af piletasterne. Du kan også tilføje nogle fjender, som din spiller kan undvige. Brug StaticBody2D noder til disse fjender og juster deres former og positioner i overensstemmelse hermed.

  AI-styring forklaret på 5 minutter eller mindre

Tilføj en timer til dag- og natcyklussen

For at oprette en dag-nat-cyklus har du brug for en timer, der kører kontinuerligt, skiftende mellem dag- og natfaser. Denne timer vil være ansvarlig for at spore tidens gang i dit spil.

Tilføj en Timer-node til din Godot-scene. Du kan gøre dette ved at højreklikke i scenepanelet, vælge Tilføj node og derefter søge efter Timer i nodebiblioteket.

Omdøb Timer-noden til noget meningsfuldt som DayNightTimer for klarhed. Konfigurer Timer-nodens egenskaber i Inspector-panelet. Indstil specifikt egenskaben Wait Time til 0 (dette er den indledende forsinkelse, før timeren starter) og kontroller One Shot-egenskaben, så timeren gentager sig.

Tilføj nu en GDScript-kode, der styrer dag-nat-cyklussen:

 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-funktionen skal du starte DayNightTimer, når scenen indlæses, for at kickstarte dag-nat-cyklussen. Funktionen _on_DayNightTimer_timeout kører hver gang timeren når nul, hvilket er når det er tid til at skifte mellem dag og nat.

Ved at følge disse trin vil du have en funktionel dag-nat-timer, der skifter mellem dag og nat, så du kan tilføje dynamiske gameplay-elementer og visuelle ændringer til dit Godot-spil baseret på tidspunktet på dagen.

  Sådan deler du højdepunkter som links på Chrome

Tilpasning af baggrunden til dag og nat

For at komplementere din dag-nat-cyklus har du brug for en måde at visuelt repræsentere overgangene mellem dag og nat. Du kan bruge en indbygget ColorRect-node til at skabe en passende baggrund til både dag og nat. Denne tilgang giver mulighed for jævnere overgange og større kontrol over det visuelle.

Tilføj en ColorRect-node i din Godot-scene. Denne node vil tjene som din baggrund, der skifter farve for at repræsentere dag og nat. Omdøb ColorRect-noden til noget meningsfuldt som BackgroundRect. Placer det som baggrundslaget, og sørg for, at det dækker hele visningsporten.

I Inspektør-panelet skal du indstille egenskaben Farve til din oprindelige baggrundsfarve, som skal repræsentere dagtid. For eksempel kan du bruge Color(0,5, 0,5, 0,8) til en lyseblå daghimmel.

Opdater nu din GDScript-kode, så den fungerer 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)

Opdater farven på BackgroundRect-noden for at afspejle tidspunktet på dagen. Indstil den for eksempel til sort, når du skifter til nat, hvilket skaber en mørk baggrund. Når du skifter til dag, skal du indstille den til lyseblå.

  Find dine mistede AirPods

Lydeffekter til dag-nat-cyklussen

Lydeffekter kan spille en afgørende rolle for at forbedre fordybelsen og realismen i din dag-nat-cyklus i Godot. De giver spillere auditive signaler, hvilket gør overgangen mellem dag og nat mere fængslende. Du kan nemt tilføje lydeffekter til dit Godot-spil.

Før du begynder, skal du sikre dig, at du har lydressourcer (lydfiler), der repræsenterer dag- og natlyde. For eksempel kan du have fuglekvidder om dagen og fårekyllinger eller ugletuder om natten.

I din Godot-scene skal du tilføje to AudioStreamPlayer2D-noder og navngive dem passende. Du kan navngive dem noget som $DaytimeSounds og $NighttimeSounds.

Opdater nu GDScript-koden for at styre lydovergangene mellem dag og nat:

 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-nat-timeren går ud, tjekker denne kode for at se, hvilken fase den skal gå over til, og afspiller passende lyde, der matcher.

Du er velkommen til at tilpasse dine copyright-fri lydeffekter, så de matcher temaet og atmosfæren i dit spil. Du kan også lag flere lydspor eller bruge lydeffekter (rumklang, ekko osv.) for at skabe en rigere auditiv oplevelse.

Gør dine Godot-spil mere engagerende med en dag-nat-cyklus

Implementering af en dag-nat-cyklus i dit Godot-spil kan forbedre spillernes fordybelse og engagement markant. Det tilføjer dybde til din spilverden, introducerer dynamiske gameplay-elementer og giver mulighed for kreativ historiefortælling.

Husk at skræddersy dag-nat-cyklussen til dit spils unikke tema og mekanik, og tøv ikke med at eksperimentere med forskellige visuelle og gameplay-effekter for at skabe en virkelig fængslende spiloplevelse.