Jak zaimplementować cykl dnia i nocy w Godot

Cykl dnia i nocy może dodać element immersyjny do twoich gier, urozmaicić grafikę i stworzyć interesującą mechanikę. Gry takie jak Minecraft, Animal Crossing i Don’t Starve skutecznie wykorzystują tę technikę i warto rozważyć dodanie jej do własnych gier, zwłaszcza tych z elementem czasu rzeczywistego.

Na szczęście w Godot 4 osiągnięcie cyklu dnia i nocy jest łatwiejsze niż kiedykolwiek.

Konfigurowanie gry Godot

Zanim zagłębisz się w implementację cyklu dnia i nocy, przygotuj podstawy swojej gry. Zacznij od utworzenia nowego projektu 2D w Godot 4. Skonfiguruj swój projekt, wprowadzając niezbędne ustawienia projektu.

Kod użyty w tym artykule jest dostępny w this Repozytorium GitHuba i jest darmowy do użytku na licencji MIT.

Teraz utwórz postać gracza. Do swojej sceny dodaj CharacterBody2D. Wewnątrz niego dodaj CollisionShape2D o kształcie prostokąta i Sprite2D. Będzie to wizualnie reprezentować twoją postać.

Aby umożliwić graczowi poruszanie się, możesz użyć następującego kodu GDScript. Dołącz ten skrypt do węzła postaci:

 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)

Ten kod pozwoli graczowi poruszać się w lewo, w prawo, w górę i w dół za pomocą klawiszy strzałek. Możesz także dodać kilku wrogów, których twój gracz będzie mógł uniknąć. Użyj węzłów StaticBody2D dla tych wrogów i odpowiednio dostosuj ich kształty i pozycje.

Dodaj timer dla cyklu dnia i nocy

Aby stworzyć cykl dnia i nocy, potrzebny jest timer, który działa w sposób ciągły, naprzemiennie pomiędzy fazami dnia i nocy. Ten licznik czasu będzie odpowiedzialny za śledzenie upływu czasu w Twojej grze.

Dodaj węzeł Timer do swojej sceny Godota. Można to zrobić klikając prawym przyciskiem myszy w panelu Scena, wybierając opcję Dodaj węzeł, a następnie wyszukując Timer w bibliotece węzłów.

Dla przejrzystości zmień nazwę węzła Timer na coś znaczącego, np. DayNightTimer. Skonfiguruj właściwości węzła Timer w panelu Inspektor. W szczególności ustaw właściwość Czas oczekiwania na 0 (jest to początkowe opóźnienie przed uruchomieniem licznika czasu) i sprawdź właściwość One Shot, aby licznik czasu się powtarzał.

Teraz dodaj kod GDScript zarządzający cyklem dnia i nocy:

 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

        

W funkcji _ready uruchom DayNightTimer po załadowaniu sceny, aby rozpocząć cykl dnia i nocy. Funkcja _on_DayNightTimer_timeout zostanie uruchomiona za każdym razem, gdy licznik czasu osiągnie zero, czyli wtedy, gdy nadejdzie czas przejścia między dniem i nocą.

Wykonując poniższe kroki, będziesz mieć funkcjonalny licznik czasu dnia i nocy, który przełącza się między dniem a nocą, umożliwiając dodawanie dynamicznych elementów rozgrywki i zmian wizualnych do gry Godot w zależności od pory dnia.

Dopasowanie tła do dnia i nocy

Aby uzupełnić cykl dnia i nocy, potrzebujesz sposobu, aby wizualnie przedstawić przejścia między dniem i nocą. Możesz użyć wbudowanego węzła ColorRect, aby stworzyć odpowiednie tło zarówno w dzień, jak i w nocy. Takie podejście pozwala na płynniejsze przejścia i większą kontrolę nad efektami wizualnymi.

W scenie Godota dodaj węzeł ColorRect. Ten węzeł będzie służyć jako tło, które zmienia kolor, aby reprezentować dzień i noc. Zmień nazwę węzła ColorRect na coś znaczącego, np. BackgroundRect. Ustaw ją jako warstwę tła, upewniając się, że zakrywa całą rzutnię.

W panelu Inspektor ustaw właściwość Kolor na początkowy kolor tła, który powinien reprezentować dzień. Na przykład możesz użyć opcji Kolor (0,5, 0,5, 0,8) dla jasnoniebieskiego nieba w ciągu dnia.

Teraz zaktualizuj swój kod GDScript, aby działał z węzłem 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)

Zaktualizuj kolor węzła BackgroundRect, aby odzwierciedlał porę dnia. Na przykład ustaw kolor czarny podczas przechodzenia w noc, tworząc ciemne tło. Przechodząc do dnia, ustaw go na jasnoniebieski.

Efekty dźwiękowe dla cyklu dnia i nocy

Efekty dźwiękowe mogą odegrać kluczową rolę w zwiększeniu zanurzenia i realizmu cyklu dnia i nocy w Godot. Dostarczają graczom wskazówek dźwiękowych, dzięki czemu przejście między dniem i nocą jest bardziej wciągające. Możesz łatwo dodać efekty dźwiękowe do swojej gry Godot.

Zanim zaczniesz, upewnij się, że masz zasoby audio (pliki dźwiękowe) reprezentujące dźwięki dzienne i nocne. Na przykład w ciągu dnia możesz słuchać śpiewu ptaków, a w nocy świerszczy lub pohukiwań sów.

W scenie Godota dodaj dwa węzły AudioStreamPlayer2D i odpowiednio je nazwij. Możesz nazwać je na przykład $DaytimeSounds i $NighttimeSounds.

Teraz zaktualizuj kod GDScript, aby zarządzać przejściami dźwiękowymi między dniem i nocą:

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

Kiedy upłynie czas timera dzień-noc, ten kod sprawdza, do której fazy powinien przejść i odtwarza odpowiednie dźwięki.

Możesz dowolnie dostosowywać efekty dźwiękowe wolne od praw autorskich, aby pasowały do ​​tematu i atmosfery Twojej gry. Można także nakładać na siebie wiele ścieżek audio lub używać efektów dźwiękowych (pogłos, echo itp.), aby uzyskać bogatsze wrażenia słuchowe.

Spraw, aby Twoje gry Godot były bardziej wciągające dzięki cyklowi dnia i nocy

Wdrożenie cyklu dnia i nocy w grze Godot może znacznie zwiększyć immersję i zaangażowanie gracza. Dodaje głębi światu gry, wprowadza dynamiczne elementy rozgrywki i pozwala na kreatywne opowiadanie historii.

Pamiętaj, aby dostosować cykl dnia i nocy do unikalnego motywu i mechaniki swojej gry i nie wahaj się eksperymentować z różnymi efektami wizualnymi i rozgrywką, aby stworzyć naprawdę wciągające wrażenia z gry.