Cum să implementați un ciclu zi-noapte în Godot

Un ciclu zi-noapte poate adăuga un element captivant la jocurile tale, poate adăuga varietate imaginilor și poate crea mecanisme interesante. Jocuri precum Minecraft, Animal Crossing și Don’t Starve folosesc această tehnică în mod eficient și este una pe care ați putea să o adăugați la propriile jocuri, în special cele cu un element în timp real.

Din fericire, în Godot 4, realizarea unui ciclu zi-noapte este mai ușor ca niciodată.

Configurarea jocului Godot

Înainte de a te scufunda în implementarea ciclului zi-noapte, stabilește fundația jocului tău. Începeți prin a crea un nou proiect 2D în Godot 4. Configurați-vă proiectul cu setările necesare pentru proiect.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Acum, creează un personaj jucător. În scena dvs., adăugați un CharacterBody2D. În interiorul acestuia, adăugați un CollisionShape2D cu formă dreptunghiulară și un Sprite2D. Aceasta vă va reprezenta vizual personajul.

Pentru a permite jucătorului să se miște, puteți utiliza următorul cod GDScript. Atașați acest script la nodul caracterului dvs.:

 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)

Acest cod va permite jucătorului să se deplaseze la stânga, la dreapta, în sus și în jos folosind tastele săgeți. De asemenea, puteți adăuga câțiva inamici pe care jucătorul dvs. să-i evite. Utilizați nodurile StaticBody2D pentru acești inamici și ajustați-le formele și pozițiile în consecință.

  11 Servicii de recepție virtuală pentru a vă gestiona apelurile primite

Adăugați un cronometru pentru ciclul zi și noapte

Pentru a crea un ciclu zi-noapte, aveți nevoie de un cronometru care să ruleze continuu, alternând între fazele de zi și de noapte. Acest cronometru va fi responsabil pentru urmărirea trecerii timpului în jocul dvs.

Adăugați un nod Timer la scena Godot. Puteți face acest lucru făcând clic dreapta în panoul Scenă, alegând Adăugare nod și apoi căutând Timer în biblioteca de noduri.

Redenumiți nodul Timer în ceva semnificativ, cum ar fi DayNightTimer, pentru claritate. Configurați proprietățile nodului Timer în panoul Inspector. Mai exact, setați proprietatea Wait Time la 0 (aceasta este întârzierea inițială înainte de începerea cronometrului) și verificați proprietatea One Shot, astfel încât cronometrul să se repete.

Acum, adăugați un cod GDScript care gestionează ciclul zi-noapte:

 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

        

În funcția _ready, porniți DayNightTimer atunci când scena se încarcă pentru a porni ciclul zi-noapte. Funcția _on_DayNightTimer_timeout va rula de fiecare dată când cronometrul ajunge la zero, adică atunci când este timpul să treceți între zi și noapte.

Urmând acești pași, veți avea un cronometru funcțional zi-noapte care trece între zi și noapte, permițându-vă să adăugați elemente dinamice de joc și modificări vizuale la jocul Godot în funcție de ora din zi.

Adaptarea fundalului pentru zi și noapte

Pentru a vă completa ciclul zi-noapte, aveți nevoie de o modalitate de a reprezenta vizual tranzițiile dintre zi și noapte. Puteți utiliza un nod ColorRect încorporat pentru a crea un fundal potrivit atât pentru zi, cât și pentru noapte. Această abordare permite tranziții mai fine și un control mai mare asupra imaginilor.

  Cele mai bune 8 proiecte Raspberry Pi Smart Magic Mirror

În scena Godot, adăugați un nod ColorRect. Acest nod va servi drept fundal care își schimbă culoarea pentru a reprezenta ziua și noaptea. Redenumiți nodul ColorRect la ceva semnificativ, cum ar fi BackgroundRect. Poziționați-l ca strat de fundal, asigurându-vă că acoperă întreaga zonă de vizualizare.

În panoul Inspector, setați proprietatea Culoare la culoarea inițială de fundal, care ar trebui să reprezinte ziua. De exemplu, puteți utiliza Color(0,5, 0,5, 0,8) pentru un cer albastru deschis în timpul zilei.

Acum, actualizați codul GDScript pentru a funcționa cu nodul ColorRect:

 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)

Actualizați culoarea nodului BackgroundRect pentru a reflecta ora din zi. De exemplu, setați-l la negru atunci când treceți la noapte, creând un fundal întunecat. Când treceți la zi, setați-l la albastru deschis.

Efecte sonore pentru ciclul zi-noapte

Efectele sonore pot juca un rol crucial în îmbunătățirea imersiunii și realismului ciclului tău zi-noapte în Godot. Ele oferă indicii auditive jucătorilor, făcând tranziția dintre zi și noapte mai captivantă. Puteți adăuga cu ușurință efecte sonore la jocul Godot.

Înainte de a începe, asigurați-vă că aveți resurse audio (fișiere de sunet) care reprezintă sunete de zi și de noapte. De exemplu, s-ar putea să aveți sunete de ciripit de păsări pentru ziua și de greieri sau zgomote de bufniță pentru noapte.

În scena Godot, adăugați două noduri AudioStreamPlayer2D și denumiți-le corespunzător. Le puteți denumi așa cum ar fi $DaytimeSounds și $NighttimeSounds.

Acum, actualizați codul GDScript pentru a gestiona tranzițiile de sunet între zi și noapte:

 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()

Când cronometrul zi-noapte expiră, acest cod verifică pentru a vedea în ce fază ar trebui să treacă și redă sunete potrivite pentru a se potrivi.

  Configurați RetroPie pe Raspberry Pi 3: Ghid rapid

Simțiți-vă liber să vă personalizați efectele sonore fără drepturi de autor pentru a se potrivi cu tema și atmosfera jocului dvs. De asemenea, puteți suprapune mai multe piese audio sau puteți utiliza efecte audio (reverb, ecou etc.) pentru a crea o experiență auditivă mai bogată.

Faceți jocurile dvs. Godot mai captivante cu un ciclu zi-noapte

Implementarea unui ciclu zi-noapte în jocul Godot poate îmbunătăți semnificativ imersiunea și implicarea jucătorului. Adaugă profunzime lumii tale de joc, introduce elemente dinamice de joc și permite o povestire creativă.

Nu uitați să adaptați ciclul zi-noapte la tema și mecanica unică a jocului și nu ezitați să experimentați cu diferite efecte vizuale și de joc pentru a crea o experiență de joc cu adevărat captivantă.