Legg til atmosfære og unik spillmekanikk med solens oppgang og fall.
En dag-natt-syklus kan legge til et oppslukende element til spillene dine, legge til variasjon til det visuelle og skape interessant mekanikk. Spill som Minecraft, Animal Crossing og Don't Starve bruker denne teknikken effektivt, og det er en du kan vurdere å legge til i dine egne spill, spesielt de med et sanntidselement.
Heldigvis, i Godot 4, er det enklere enn noen gang å oppnå en dag-natt-syklus.
Sette opp Godot-spillet
Før du dykker inn i implementeringen av dag-natt-syklusen, sett opp grunnlaget for spillet ditt. Start med å lage et nytt 2D-prosjekt i Godot 4. Sett opp prosjektet med de nødvendige prosjektinnstillingene.
Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.
Lag nå en spillerkarakter. I scenen din legger du til en CharacterBody2D. Inni den legger du til en CollisionShape2D med en rektangelform og en Sprite2D. Dette vil representere karakteren din visuelt.
For å la spilleren bevege seg, kan du bruke følgende GDScript-kode. Fest dette skriptet til karakternoden din:
extends CharacterBody2D
var speed = 300
func _physics_process(delta):
var input_dir = Vector2.ZEROif Input.is_action_pressed("ui_left"):
input_dir.x -= 1if Input.is_action_pressed("ui_right"):
input_dir.x += 1if Input.is_action_pressed("ui_up"):
input_dir.y -= 1if Input.is_action_pressed("ui_down"):
input_dir.y += 1
velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)
Denne koden lar spilleren bevege seg til venstre, høyre, opp og ned ved hjelp av piltastene. Du kan også legge til noen fiender for spilleren din å unngå. Bruk StaticBody2D noder for disse fiendene og justere deres former og posisjoner deretter.
Legg til en timer for dag- og nattsyklusen
For å lage en dag-natt-syklus trenger du en timer som går kontinuerlig, vekslende mellom dag- og nattfaser. Denne tidtakeren vil være ansvarlig for å spore tidens gang i spillet ditt.
Legg til en Timer-node til Godot-scenen din. Du kan gjøre dette ved å høyreklikke i Scene-panelet og velge Legg til node, og deretter søke etter Timer i nodebiblioteket.
Gi nytt navn til Timer-noden til noe meningsfullt som DagNatttimer for klarhet. Konfigurer Timer-nodens egenskaper i Inspektør-panelet. Spesifikt, angi Ventetid egenskapen til 0 (dette er den første forsinkelsen før timeren starter) og kontroller Et skudd egenskap slik at tidtakeren gjentar seg.
Legg nå til en GDScript-kode som styrer dag-natt-syklusen:
extends Node2D
var day_duration = 30# Duration of the day in seconds
var night_duration = 30# Duration of the night in secondsvar 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 _klar funksjon, start DagNatttimer når scenen laster for å kickstarte dag-natt-syklusen. De _on_DayNightTimer_timeout funksjonen vil kjøre hver gang tidtakeren når null, som er når det er på tide å skifte mellom dag og natt.
Ved å følge disse trinnene vil du ha en funksjonell dag-natt-timer som går mellom dag og natt, slik at du kan legge til dynamiske spillelementer og visuelle endringer i Godot-spillet ditt basert på tiden på dagen.
Tilpasning av bakgrunnen for dag og natt
For å komplettere dag-natt-syklusen din, trenger du en måte å visuelt representere overgangene mellom dag og natt. Du kan bruke en innebygd ColorRect node for å lage en passende bakgrunn for både dag og natt. Denne tilnærmingen gir jevnere overganger og større kontroll over det visuelle.
Legg til en i Godot-scenen din ColorRect node. Denne noden vil fungere som bakgrunnen din som endrer farge for å representere dag og natt. Gi nytt navn til ColorRect node til noe meningsfullt som BakgrunnRekt. Plasser det som bakgrunnslaget, og sørg for at det dekker hele visningsporten.
I inspektørpanelet angir du Farge egenskap til den opprinnelige bakgrunnsfargen, som skal representere dagtid. Du kan for eksempel bruke Farge (0,5, 0,5, 0,8) for en lyseblå daghimmel.
Oppdater nå GDScript-koden for å fungere med ColorRect node:
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
Oppdater fargen på BakgrunnRekt node for å gjenspeile tiden på dagen. Sett den for eksempel til svart når du går over til natt, og skaper en mørk bakgrunn. Når du går over til dag, sett den til lyseblå.
Lydeffekter for dag-natt-syklusen
Lydeffekter kan spille en avgjørende rolle for å forbedre fordypningen og realismen til dag-natt-syklusen din i Godot. De gir spillere auditive signaler, noe som gjør overgangen mellom dag og natt mer fengslende. Du kan enkelt legg til lydeffekter i Godot-spillet ditt.
Før du begynner, sørg for at du har lydressurser (lydfiler) som representerer dag- og nattlyder. Du kan for eksempel ha fuglekvitter for dagen og sirisser eller ugletuter for natten.
Legg til to i Godot-scenen din AudioStreamPlayer2D noder og navngi dem riktig. Du kan navngi dem noe sånt $DaytimeSounds og $NighttimeSounds.
Oppdater nå GDScript-koden for å administrere lydovergangene mellom dag og 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-timeren går ut, sjekker denne koden for å se hvilken fase den skal gå over til og spiller passende lyder som passer.
Tilpass gjerne din opphavsrettsfrie lydeffekter for å matche temaet og atmosfæren i spillet ditt. Du kan også legge flere lydspor i lag eller bruke lydeffekter (reverb, ekko osv.) for å skape en rikere auditiv opplevelse.
Gjør Godot-spillene dine mer engasjerende med en dag-natt-syklus
Implementering av en dag-natt-syklus i Godot-spillet ditt kan forbedre spillerens fordypning og engasjement betraktelig. Det gir dybde til spillverdenen din, introduserer dynamiske spillelementer og gir mulighet for kreativ historiefortelling.
Husk å skreddersy dag-natt-syklusen til spillets unike tema og mekanikk, og ikke nøl med å eksperimentere med forskjellige visuelle effekter og spilleffekter for å skape et virkelig fengslende spill erfaring.