Како имплементирати циклус дан-ноћ у Годоу

Promena dana i noći može uneti fascinantan aspekt u vaše igre, pružajući raznolikost vizuelnom prikazu i kreirajući zanimljive mehanike. Igre poput Minecrafta, Animal Crossinga i Don’t Starve uspešno koriste ovu tehniku. Možda biste razmislili o implementaciji ove opcije u svoje igre, posebno one koje uključuju elemente realnog vremena.

U Godot 4, proces implementacije ciklusa dana i noći sada je jednostavniji nego ikada.

Priprema Godot igre

Pre nego što se upustimo u implementaciju ciklusa dana i noći, potrebno je postaviti temelje za vašu igru. Počnite sa kreiranjem novog 2D projekta u Godot 4. Prilagodite postavke projekta prema vašim potrebama.

Kod koji je korišćen u ovom članku dostupan je na GitHub repozitorijumu i možete ga koristiti pod MIT licencom.

Sada kreirajte lik igrača. Dodajte CharacterBody2D u scenu. Unutar njega, dodajte CollisionShape2D sa pravougaonim oblikom i Sprite2D. Ovo će biti vizuelna reprezentacija vašeg lika.

Da biste omogućili igraču da se kreće, koristite sledeći GDScript kod. Priložite ovu skriptu vašem čvoru karaktera:

 extends CharacterBody2D
var brzina = 300

func _physics_process(delta):
    var smer_unosa = Vector2.ZERO

    if Input.is_action_pressed("ui_left"):
        smer_unosa.x -= 1

    if Input.is_action_pressed("ui_right"):
        smer_unosa.x += 1

    if Input.is_action_pressed("ui_up"):
        smer_unosa.y -= 1

    if Input.is_action_pressed("ui_down"):
        smer_unosa.y += 1

    velocity = smer_unosa.normalized() * brzina
    move_and_collide(velocity * delta)

Ovaj kod će omogućiti igraču da se kreće levo, desno, gore i dole koristeći strelice na tastaturi. Takođe, možete dodati neke neprijatelje koje će igrač izbegavati. Koristite StaticBody2D čvorove za ove neprijatelje i prilagodite njihove oblike i položaje.

Dodavanje tajmera za ciklus dana i noći

Za kreiranje ciklusa dana i noći, potreban vam je tajmer koji neprekidno radi, smenjujući faze dana i noći. Ovaj tajmer će pratiti protok vremena u vašoj igri.

Dodajte tajmer čvor u vašu Godot scenu. To možete učiniti desnim klikom na panel scene, odabirom opcije „Dodaj čvor“ i traženjem tajmera u biblioteci čvorova.

Preimenujte čvor tajmera u nešto smisleno, kao što je „DanNocTajmer“, radi lakše identifikacije. Konfigurišite svojstva tajmer čvora u panelu „Inspektor“. Konkretno, postavite svojstvo „Vreme čekanja“ na 0 (ovo je početno kašnjenje pre pokretanja tajmera) i označite svojstvo „Jedan hitac“ tako da se tajmer ponavlja.

Sada dodajte GDScript kod koji će kontrolisati ciklus dana i noći:

 extends Node2D
var trajanje_dana = 30 
var trajanje_noci = 30 

var je_dan = true

func _ready():
    
    $DanNocTajmer.start()

func _on_DanNocTajmer_timeout():
    if je_dan:
        
        $DanNocTajmer.start(trajanje_dana)
        je_dan = false

        
    else:
        
        $DanNocTajmer.start(trajanje_noci)
        je_dan = true

        

U funkciji _ready, pokrenite DanNocTajmer kada se scena učita, kako bi se aktivirao ciklus dana i noći. Funkcija _on_DanNocTajmer_timeout će se pokrenuti svaki put kada tajmer dostigne nulu, označavajući trenutak prelaska između dana i noći.

Sledeći ove korake, imaćete funkcionalni tajmer za smenu dana i noći, omogućavajući vam da dodajete dinamične elemente igre i vizuelne promene u vašoj Godot igri, u zavisnosti od doba dana.

Prilagođavanje pozadine za dan i noć

Da biste kompletirali ciklus dana i noći, potreban vam je način da vizuelno predstavite smenu između dana i noći. Možete koristiti ugrađeni ColorRect čvor da kreirate odgovarajuću pozadinu za dan i noć. Ovaj pristup omogućava glatke prelaze i veću kontrolu nad vizuelnim prikazom.

U vašoj Godot sceni, dodajte ColorRect čvor. Ovaj čvor će biti vaša pozadina koja menja boju, predstavljajući dan i noć. Preimenujte ColorRect čvor u nešto smisleno, kao što je „PozadinaPravougaonik“. Postavite ga kao pozadinski sloj, osiguravajući da pokriva ceo prozor za prikaz.

U panelu „Inspektor“, podesite svojstvo „Boja“ na vašu početnu boju pozadine, koja bi trebala predstavljati dan. Na primer, možete koristiti boju (0.5, 0.5, 0.8) za svetlo plavo dnevno nebo.

Sada ažurirajte GDScript kod da radi sa ColorRect čvorom:

 func _on_day_night_timer_timeout():
    if je_dan:
        
        $DanNocTajmer.start(trajanje_dana)
        je_dan = false

        
        $PozadinaPravougaonik.color = Color(0.5, 0.5, 0.8) 
    else:
        
        $DanNocTajmer.start(trajanje_noci)
        je_dan = true

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

Ažurirajte boju čvora PozadinaPravougaonik kako bi odražavala doba dana. Na primer, postavite je na crno kada prelazite u noć, stvarajući tamnu pozadinu. Kada prelazite na dan, postavite je na svetlo plavu.

Zvučni efekti za ciklus dana i noći

Zvučni efekti mogu igrati ključnu ulogu u poboljšanju uronjenosti i realizma ciklusa dana i noći u Godot-u. Oni pružaju zvučne signale igračima, čineći prelaz između dana i noći primetnijim. Zvučne efekte možete lako dodati u svoju Godot igru.

Pre nego što počnete, uverite se da imate audio resurse (zvučne datoteke) koje predstavljaju zvuke dana i noći. Na primer, tokom dana možete čuti cvrkut ptica, a noću cvrčke ili sove.

U vašoj Godot sceni dodajte dva AudioStreamPlayer2D čvora i nazovite ih na odgovarajući način. Možete ih nazvati kao što su $DnevniZvukovi i $NoćniZvukovi.

Sada ažurirajte GDScript kod da kontrolišete prelaze zvuka između dana i noći:

 func _on_day_night_timer_timeout():
    if je_dan:
        
        $DanNocTajmer.start(trajanje_dana)
        je_dan = false
    
        
        $NoćniZvukovi.stop()
        $DnevniZvukovi.play()
        
    else:
        
        $DanNocTajmer.start(trajanje_noci)
        je_dan = true
        
        $DnevniZvukovi.stop()
        $NoćniZvukovi.play()

Kada tajmer za dan i noć istekne, ovaj kod proverava u koju fazu treba da pređe i reprodukuje odgovarajuće zvučne efekte.

Slobodno prilagodite zvučne efekte bez autorskih prava tako da odgovaraju temi i atmosferi vaše igre. Takođe možete kombinovati više audio zapisa ili koristiti audio efekte (reverb, eho, itd.) da biste stvorili bogatije audio iskustvo.

Učinite svoje Godot igre privlačnijim pomoću ciklusa dana i noći

Implementacija ciklusa dana i noći u vašoj Godot igri može značajno poboljšati uranjanje i angažovanje igrača. Dodaje dubinu vašem svetu igre, uvodi elemente dinamične igre i omogućava kreativno pripovedanje.

Ne zaboravite da prilagodite ciklus dana i noći jedinstvenoj temi i mehanici vaše igre i eksperimentišite sa različitim vizuelnim i igraćim efektima kako biste stvorili zaista zadivljujuće iskustvo igranja.