Voeg sfeer en unieke gameplay-mechanica toe met de opkomst en ondergang van een zon.
Een dag-nachtcyclus kan een meeslepend element aan je games toevoegen, variatie aan de beelden toevoegen en interessante mechanismen creëren. Games als Minecraft, Animal Crossing en Don't Starve maken effectief gebruik van deze techniek, en het is een techniek die je zou kunnen overwegen toe te voegen aan je eigen games, vooral die met een realtime-element.
Gelukkig is het in Godot 4 gemakkelijker dan ooit om een dag-nachtcyclus te bereiken.
Het Godot-spel opzetten
Voordat u in de implementatie van de dag-nachtcyclus duikt, moet u de basis voor uw game leggen. Begin met het maken van een nieuw 2D-project in Godot 4. Stel uw project in met de benodigde projectinstellingen.
De code die in dit artikel wordt gebruikt, is hierin beschikbaar GitHub-opslagplaats en kunt u gratis gebruiken onder de MIT-licentie.
Maak nu een spelerspersonage. Voeg in je scène een KarakterLichaam2D. Voeg daarin een toe Botsingsvorm2D met een rechthoekige vorm en een Sprite2D. Dit zal je karakter visueel vertegenwoordigen.
Om de speler te laten bewegen, kunt u de volgende GDScript-code gebruiken. Voeg dit script toe aan je karakterknooppunt:
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)
Met deze code kan de speler met de pijltjestoetsen naar links, rechts, omhoog en omlaag bewegen. Je kan ook voeg wat vijanden toe zodat je speler kan ontwijken. Gebruik StatischBody2D knooppunten voor deze vijanden en pas hun vormen en posities dienovereenkomstig aan.
Voeg een timer toe voor de dag- en nachtcyclus
Om een dag-nachtcyclus te creëren, heb je een timer nodig die continu loopt, afwisselend tussen dag- en nachtfasen. Deze timer is verantwoordelijk voor het bijhouden van het verstrijken van de tijd in je spel.
Voeg een Timer-knooppunt toe aan uw Godot-scène. U kunt dit doen door met de rechtermuisknop in het deelvenster Scène te klikken en te kiezen Knooppunt toevoegenen vervolgens zoeken naar Timer in de knooppuntbibliotheek.
Hernoem het Timer-knooppunt naar iets betekenisvols, zoals DagNachtTimer voor alle duidelijkheid. Configureer de eigenschappen van het Timer-knooppunt in het paneel Inspector. Stel met name de Wacht tijd eigenschap op 0 (dit is de initiële vertraging voordat de timer start) en controleer de Een schot eigenschap zodat de timer zich herhaalt.
Voeg nu een GDScript-code toe die de dag-nachtcyclus beheert:
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
In de _klaar functie, start de DagNachtTimer wanneer de scène wordt geladen om de dag-nachtcyclus een kickstart te geven. De _on_DayNightTimer_timeout De functie wordt elke keer uitgevoerd als de timer nul bereikt, wat het moment is om over te schakelen tussen dag en nacht.
Door deze stappen te volgen, beschikt u over een functionele dag-nachttimer die overschakelt tussen dag en nacht. waardoor je dynamische gameplay-elementen en visuele veranderingen aan je Godot-spel kunt toevoegen op basis van het tijdstip van de dag.
De achtergrond aanpassen voor dag en nacht
Als aanvulling op uw dag-nachtcyclus heeft u een manier nodig om de overgangen tussen dag en nacht visueel weer te geven. Je kunt een ingebouwde gebruiken KleurRect node om zowel overdag als 's nachts een geschikte achtergrond te creëren. Deze aanpak zorgt voor vloeiendere overgangen en meer controle over de beelden.
Voeg in je Godot-scène een KleurRect knooppunt. Dit knooppunt zal dienen als uw achtergrond die van kleur verandert om dag en nacht weer te geven. Hernoem de KleurRect knooppunt naar iets betekenisvols, zoals AchtergrondRect. Plaats deze als achtergrondlaag en zorg ervoor dat deze de gehele kijkvenster bedekt.
Stel in het paneel Inspecteur de Kleur eigenschap naar uw oorspronkelijke achtergrondkleur, die overdag zou moeten vertegenwoordigen. U kunt bijvoorbeeld gebruiken Kleur (0,5, 0,5, 0,8) voor een lichtblauwe hemel overdag.
Update nu uw GDScript-code zodat deze met de KleurRect knooppunt:
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
Update de kleur van de AchtergrondRect knooppunt dat de tijd van de dag weergeeft. Zet hem bijvoorbeeld op zwart bij de overgang naar de nacht, zodat er een donkere achtergrond ontstaat. Bij de overgang naar dag stelt u deze in op lichtblauw.
Geluidseffecten voor de dag-nachtcyclus
Geluidseffecten kunnen een cruciale rol spelen bij het verbeteren van de onderdompeling en het realisme van uw dag-nachtcyclus in Godot. Ze geven auditieve aanwijzingen aan spelers, waardoor de overgang tussen dag en nacht boeiender wordt. Dat kan gemakkelijk voeg geluidseffecten toe aan je Godot-spel.
Zorg ervoor dat u, voordat u begint, over audiobronnen (geluidsbestanden) beschikt die dag- en nachtgeluiden vertegenwoordigen. Overdag kunt u bijvoorbeeld vogelgeluiden horen en 's nachts krekels of uilengeluiden.
Voeg er twee toe in je Godot-scène AudioStreamPlayer2D knooppunten en geef ze een passende naam. Je kunt ze zoiets noemen $Geluiden overdag En $Nachtgeluiden.
Update nu de GDScript-code om de geluidsovergangen tussen dag en nacht te beheren:
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
Wanneer de dag-nachttimer afloopt, controleert deze code naar welke fase hij moet overgaan en speelt hij de juiste geluiden af.
Voel vrij om uw aan te passen auteursrechtvrije geluidseffecten passend bij het thema en de sfeer van je spel. U kunt ook meerdere audiotracks in lagen aanbrengen of audio-effecten (reverb, echo, enz.) gebruiken om een rijkere auditieve ervaring te creëren.
Maak uw Godot-spellen boeiender met een dag-nachtcyclus
Het implementeren van een dag-nachtcyclus in je Godot-spel kan de onderdompeling en betrokkenheid van spelers aanzienlijk vergroten. Het voegt diepte toe aan je gamewereld, introduceert dynamische gameplay-elementen en maakt creatieve verhalen mogelijk.
Vergeet niet om de dag-nachtcyclus af te stemmen op het unieke thema en de mechanica van je game, en aarzel niet om te experimenteren met verschillende visuele en gameplay-effecten om echt boeiend spel te creëren ervaring.