Tilføj atmosfære og unik gameplay-mekanik med solopgang og fald.

En dag-nat-cyklus kan tilføje et fordybende element til dine spil, tilføje variation til det visuelle og skabe interessant mekanik. Spil som Minecraft, Animal Crossing og Don't Starve bruger denne teknik effektivt, og det er en, du kan overveje at tilføje til dine egne spil, især dem med et realtidselement.

Heldigvis, i Godot 4, er det nemmere end nogensinde at opnå en dag-nat-cyklus.

Opsætning af Godot-spillet

Inden du dykker ned i implementeringen af ​​dag-nat-cyklus, skal du oprette grundlaget for dit spil. Start med at oprette et nyt 2D-projekt i Godot 4. Konfigurer dit projekt med de nødvendige projektindstillinger.

Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.

Opret nu en spillerkarakter. Tilføj en i din scene CharacterBody2D. Indeni den skal du tilføje en CollisionShape2D med en rektangelform og en Sprite2D. Dette vil repræsentere din karakter visuelt.

instagram viewer

For at tillade afspilleren at bevæge sig, kan du bruge følgende GDScript-kode. Vedhæft dette script til din karakternode:

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)

Denne kode giver spilleren mulighed for at flytte til venstre, højre, op og ned ved hjælp af piletasterne. Du kan også tilføje nogle fjender for din spiller at undvige. Brug StaticBody2D noder for disse fjender og justere deres former og positioner i overensstemmelse hermed.

Tilføj en timer til dag- og natcyklussen

For at oprette en dag-nat-cyklus har du brug for en timer, der kører kontinuerligt, skiftende mellem dag- og natfaser. Denne timer vil være ansvarlig for at spore tidens gang i dit spil.

Tilføj en Timer-node til din Godot-scene. Du kan gøre dette ved at højreklikke i scenepanelet og vælge Tilføj node, og derefter søge efter Timer i nodebiblioteket.

Omdøb Timer-noden til noget meningsfuldt som DayNightTimer for klarhed. Konfigurer Timer-nodens egenskaber i Inspector-panelet. Indstil specifikt Ventetid egenskaben til 0 (dette er den indledende forsinkelse, før timeren starter), og kontroller Et skud egenskab, så timeren gentager sig.

Tilføj nu en GDScript-kode, der styrer dag-nat-cyklussen:

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 _parat funktion, start DayNightTimer når scenen indlæses for at kickstarte dag-nat-cyklussen. Det _on_DayNightTimer_timeout funktionen kører hver gang timeren når nul, hvilket er når det er tid til at skifte mellem dag og nat.

Ved at følge disse trin vil du have en funktionel dag-nat-timer, der skifter mellem dag og nat, giver dig mulighed for at tilføje dynamiske gameplay-elementer og visuelle ændringer til dit Godot-spil baseret på tidspunktet på dagen.

Tilpasning af baggrunden til dag og nat

For at komplementere din dag-nat-cyklus har du brug for en måde at visuelt repræsentere overgangene mellem dag og nat. Du kan bruge en indbygget ColorRect node for at skabe en passende baggrund til både dag og nat. Denne tilgang giver mulighed for jævnere overgange og større kontrol over det visuelle.

Tilføj en i din Godot-scene ColorRect node. Denne node vil tjene som din baggrund, der skifter farve for at repræsentere dag og nat. Omdøb den ColorRect node til noget meningsfuldt som BaggrundRekt. Placer det som baggrundslaget, og sørg for, at det dækker hele visningsporten.

Indstil i Inspektør-panelet Farve egenskab til din oprindelige baggrundsfarve, som skal repræsentere dagtimerne. Du kan f.eks. bruge Farve (0,5, 0,5, 0,8) for en lyseblå daghimmel.

Opdater nu din GDScript-kode, så den fungerer 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

Opdater farven på BaggrundRekt node for at afspejle tidspunktet på dagen. Indstil den for eksempel til sort, når du skifter til nat, hvilket skaber en mørk baggrund. Når du skifter til dag, skal du indstille den til lyseblå.

Lydeffekter til dag-nat-cyklussen

Lydeffekter kan spille en afgørende rolle for at forbedre fordybelsen og realismen i din dag-nat-cyklus i Godot. De giver spillere auditive signaler, hvilket gør overgangen mellem dag og nat mere fængslende. Du kan sagtens tilføje lydeffekter til dit Godot-spil.

Før du begynder, skal du sikre dig, at du har lydressourcer (lydfiler), der repræsenterer dag- og natlyde. For eksempel kan du have fuglekvidder om dagen og fårekyllinger eller ugletuder om natten.

Tilføj to i din Godot-scene AudioStreamPlayer2D noder og navngiv dem passende. Du kan navngive dem sådan noget $DaytimeSounds og $NighttimeSounds.

Opdater nu GDScript-koden for at styre lydovergangene mellem dag og nat:

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-nat-timeren går ud, tjekker denne kode for at se, hvilken fase den skal gå over til, og afspiller passende lyde, der matcher.

Du er velkommen til at tilpasse din ophavsretsfri lydeffekter at matche temaet og atmosfæren i dit spil. Du kan også lag flere lydspor eller bruge lydeffekter (rumklang, ekko osv.) for at skabe en rigere auditiv oplevelse.

Gør dine Godot-spil mere engagerende med en dag-nat-cyklus

Implementering af en dag-nat-cyklus i dit Godot-spil kan forbedre spillernes fordybelse og engagement markant. Det tilføjer dybde til din spilverden, introducerer dynamiske gameplay-elementer og giver mulighed for kreativ historiefortælling.

Husk at skræddersy dag-nat-cyklussen til dit spils unikke tema og mekanik, og tøv ikke med at eksperimentere med forskellige visuelle effekter og gameplay-effekter for at skabe et virkelig fængslende spil erfaring.