Lägg till atmosfär och unik spelmekanik med solens uppgång och fall.

En dag-natt-cykel kan lägga till ett uppslukande element till dina spel, lägga till variation till bilder och skapa intressant mekanik. Spel som Minecraft, Animal Crossing och Don't Starve använder den här tekniken effektivt, och det är en som du kan överväga att lägga till i dina egna spel, särskilt de med ett realtidselement.

Lyckligtvis, i Godot 4, är det lättare än någonsin att uppnå en dag-natt-cykel.

Konfigurera Godot-spelet

Innan du dyker in i implementeringen av dag-natt-cykeln, sätt upp grunden för ditt spel. Börja med att skapa ett nytt 2D-projekt i Godot 4. Konfigurera ditt projekt med de nödvändiga projektinställningarna.

Koden som används i den här artikeln är tillgänglig i denna GitHub-förråd och är gratis för dig att använda under MIT-licensen.

Skapa nu en spelarkaraktär. Lägg till en i din scen CharacterBody2D. Lägg till en inuti den CollisionShape2D med en rektangelform och en Sprite2D. Detta kommer att representera din karaktär visuellt.

instagram viewer

För att låta spelaren röra sig kan du använda följande GDScript-kod. Bifoga det här skriptet till din karaktärsnod:

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)

Denna kod gör att spelaren kan flytta vänster, höger, upp och ner med hjälp av piltangenterna. Du kan också lägga till några fiender för din spelare att undvika. Använda sig av StaticBody2D noder för dessa fiender och justera deras former och positioner därefter.

Lägg till en timer för dag- och nattcykeln

För att skapa en dag-natt-cykel behöver du en timer som går kontinuerligt och växlar mellan dag- och nattfaser. Denna timer kommer att vara ansvarig för att spåra tidens gång i ditt spel.

Lägg till en timernod till din Godot-scen. Du kan göra detta genom att högerklicka i scenpanelen och välja Lägg till nodoch sedan söka efter Timer i nodbiblioteket.

Byt namn på Timer-noden till något meningsfullt som DayNightTimer för tydlighets skull. Konfigurera timernodens egenskaper i panelen Inspektör. Specifikt, ställ in Väntetid egenskapen till 0 (detta är den initiala fördröjningen innan timern startar) och kontrollera Ett skott egenskapen så att timern upprepas.

Lägg nu till en GDScript-kod som hanterar dag-natt-cykeln:

extends Node2D

var day_duration = 30# Duration of the day in seconds
var night_duration = 30# Duration of the night in seconds

var is_day = true

func _ready():
# Start the timer when the scene loads
$DayNightTimer.start()

func _on_DayNightTimer_timeout():
if is_day:
# Transition from day to night
$DayNightTimer.start(day_duration)
is_day = false

# Add your code here for night-specific actions or visual changes
else:
# Transition from night to day
$DayNightTimer.start(night_duration)
is_day = true

# Add your code here for day-specific actions or visual changes

I den _redo funktionen, starta DayNightTimer när scenen laddas för att kickstarta dag-natt-cykeln. De _on_DayNightTimer_timeout funktionen kommer att köras varje gång timern når noll, vilket är när det är dags att växla mellan dag och natt.

Genom att följa dessa steg får du en funktionell dag-natt-timer som växlar mellan dag och natt, så att du kan lägga till dynamiska spelelement och visuella förändringar i ditt Godot-spel baserat på tiden på dygnet.

Anpassa bakgrunden för dag och natt

För att komplettera din dag-natt-cykel behöver du ett sätt att visuellt representera övergångarna mellan dag och natt. Du kan använda en inbyggd ColorRect nod för att skapa en lämplig bakgrund för både dag och natt. Detta tillvägagångssätt möjliggör mjukare övergångar och större kontroll över det visuella.

Lägg till en i din Godot-scen ColorRect nod. Denna nod kommer att fungera som din bakgrund som ändrar färg för att representera dag och natt. Byt namn på ColorRect nod till något meningsfullt som BakgrundRect. Placera den som bakgrundslager och se till att den täcker hela visningsporten.

På panelen Inspektör ställer du in Färg egenskap till din ursprungliga bakgrundsfärg, som ska representera dagtid. Du kan till exempel använda Färg (0,5, 0,5, 0,8) för en ljusblå daghimmel.

Uppdatera nu din GDScript-kod så att den fungerar med ColorRect nod:

func _on_day_night_timer_timeout():
if is_day:
# Transition from day to night
$DayNightTimer.start(day_duration)
is_day = false

# Add your code here for night-specific actions or visual changes

# Update the background color to indicate day
$BackgroundRect.color = Color(0.5, 0.5, 0.8) # Light blue for day
else:
# Transition from night to day
$DayNightTimer.start(night_duration)
is_day = true

# Add your code here for day-specific actions or visual changes

# Update the background color to indicate night
$BackgroundRect.color = Color(0, 0, 0) # Black for night

Uppdatera färgen på BakgrundRect nod för att återspegla tiden på dygnet. Ställ till exempel in den på svart när du går över till natten, vilket skapar en mörk bakgrund. När du går över till dag, ställ in den på ljusblå.

Ljudeffekter för dag-natt-cykeln

Ljudeffekter kan spela en avgörande roll för att förbättra fördjupningen och realismen i din dag-natt-cykel i Godot. De ger spelare hörselsignaler, vilket gör övergången mellan dag och natt mer fängslande. Du kan enkelt lägg till ljudeffekter i ditt Godot-spel.

Innan du börjar, se till att du har ljudresurser (ljudfiler) som representerar dag- och nattljud. Du kan till exempel ha fågelkvitter för dagen och syrsor eller ugglor för natten.

Lägg till två i din Godot-scen AudioStreamPlayer2D noder och namnge dem på lämpligt sätt. Du kan namnge dem något liknande $DaytimeSounds och $NighttimeSounds.

Uppdatera nu GDScript-koden för att hantera ljudövergångarna mellan dag och natt:

func _on_day_night_timer_timeout():
if is_day:
# Transition from day to night
$DayNightTimer.start(day_duration)
is_day = false

# Play daytime sounds
$NighttimeSounds.stop() # Stop nighttime sounds
$DaytimeSounds.play() # Start daytime sounds

else:
# Transition from night to day
$DayNightTimer.start(night_duration)
is_day = true

# Play nighttime sounds
$DaytimeSounds.stop() # Stop daytime sounds
$NighttimeSounds.play() # Start nighttime sounds

När dag-natt-timern tar slut, kontrollerar den här koden för att se vilken fas den ska övergå till och spelar lämpliga ljud för att matcha.

Känn dig fri att skräddarsy din upphovsrättsfria ljudeffekter för att matcha temat och atmosfären i ditt spel. Du kan också lagra flera ljudspår eller använda ljudeffekter (reverb, eko, etc.) för att skapa en rikare ljudupplevelse.

Gör dina Godot-spel mer engagerande med en dag-natt-cykel

Att implementera en dag-natt-cykel i ditt Godot-spel kan avsevärt förbättra spelarens fördjupning och engagemang. Det ger djup till din spelvärld, introducerar dynamiska spelelement och möjliggör kreativt berättande.

Kom ihåg att skräddarsy dag-natt-cykeln efter ditt spels unika tema och mekanik, och tveka inte att experimentera med olika visuella effekter och speleffekter för att skapa ett riktigt fängslande spel erfarenhet.