Fügen Sie Atmosphäre und einzigartige Spielmechaniken mit dem Auf- und Untergang einer Sonne hinzu.
Ein Tag-Nacht-Zyklus kann Ihren Spielen ein immersives Element verleihen, die Grafik abwechslungsreicher gestalten und interessante Spielmechaniken schaffen. Spiele wie Minecraft, Animal Crossing und Don’t Starve nutzen diese Technik effektiv, und Sie könnten darüber nachdenken, sie in Ihre eigenen Spiele einzubauen, insbesondere solche mit einem Echtzeitelement.
Glücklicherweise ist es in Godot 4 einfacher als je zuvor, einen Tag-Nacht-Zyklus zu erreichen.
Einrichten des Godot-Spiels
Bevor Sie sich mit der Implementierung des Tag-Nacht-Zyklus befassen, legen Sie die Grundlage für Ihr Spiel fest. Beginnen Sie mit der Erstellung eines neuen 2D-Projekts in Godot 4. Richten Sie Ihr Projekt mit den erforderlichen Projekteinstellungen ein.
Der in diesem Artikel verwendete Code ist hier verfügbar GitHub-Repository Die Nutzung steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.
Erstellen Sie nun einen Spielercharakter. Fügen Sie in Ihrer Szene eine hinzu
CharacterBody2D. Fügen Sie darin ein hinzu CollisionShape2D mit einer rechteckigen Form und a Sprite2D. Dadurch wird Ihr Charakter visuell dargestellt.Um dem Player die Bewegung zu ermöglichen, können Sie den folgenden GDScript-Code verwenden. Hängen Sie dieses Skript an Ihren Charakterknoten an:
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)
Dieser Code ermöglicht es dem Spieler, sich mit den Pfeiltasten nach links, rechts, oben und unten zu bewegen. Du kannst auch Füge einige Feinde hinzu damit Ihr Spieler ausweichen kann. Verwenden StaticBody2D Knoten für diese Feinde und passen ihre Formen und Positionen entsprechend an.
Fügen Sie einen Timer für den Tag- und Nachtzyklus hinzu
Um einen Tag-Nacht-Zyklus zu erstellen, benötigen Sie einen Timer, der kontinuierlich läuft und zwischen Tag- und Nachtphasen wechselt. Dieser Timer ist dafür verantwortlich, den Zeitablauf in Ihrem Spiel zu verfolgen.
Fügen Sie Ihrer Godot-Szene einen Timer-Knoten hinzu. Sie können dies tun, indem Sie mit der rechten Maustaste in das Szenenfenster klicken und auswählen Knoten hinzufügen, und dann suchen Timer in der Knotenbibliothek.
Benennen Sie den Timer-Knoten in einen aussagekräftigen Namen um DayNightTimer zur Klarheit. Konfigurieren Sie die Eigenschaften des Timer-Knotens im Inspektorfenster. Stellen Sie insbesondere die ein Wartezeit Eigenschaft auf 0 (dies ist die anfängliche Verzögerung, bevor der Timer startet) und überprüfen Sie die Ein Schuss Eigenschaft, damit der Timer wiederholt wird.
Fügen Sie nun einen GDScript-Code hinzu, der den Tag-Nacht-Zyklus verwaltet:
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
Im _bereit Funktion, starten Sie die DayNightTimer wenn die Szene geladen wird, um den Tag-Nacht-Zyklus zu starten. Der _on_DayNightTimer_timeout Die Funktion wird jedes Mal ausgeführt, wenn der Timer Null erreicht, also wenn es Zeit ist, zwischen Tag und Nacht zu wechseln.
Wenn Sie diese Schritte befolgen, erhalten Sie einen funktionierenden Tag-Nacht-Timer, der zwischen Tag und Nacht wechselt. So können Sie je nach Tageszeit dynamische Gameplay-Elemente und visuelle Änderungen zu Ihrem Godot-Spiel hinzufügen.
Anpassen des Hintergrunds für Tag und Nacht
Um Ihren Tag-Nacht-Zyklus zu ergänzen, benötigen Sie eine Möglichkeit, die Übergänge zwischen Tag und Nacht visuell darzustellen. Sie können einen integrierten verwenden ColorRect Knoten, um einen passenden Hintergrund für Tag und Nacht zu erstellen. Dieser Ansatz ermöglicht sanftere Übergänge und eine bessere Kontrolle über die visuelle Darstellung.
Fügen Sie in Ihrer Godot-Szene eine hinzu ColorRect Knoten. Dieser Knoten dient als Hintergrund, dessen Farbe sich ändert, um Tag und Nacht darzustellen. Benennen Sie die um ColorRect Knoten zu etwas Sinnvollem wie BackgroundRect. Positionieren Sie es als Hintergrundebene und stellen Sie sicher, dass es das gesamte Ansichtsfenster abdeckt.
Legen Sie im Inspektorfenster fest Farbe -Eigenschaft auf Ihre anfängliche Hintergrundfarbe, die den Tag darstellen sollte. Sie können zum Beispiel verwenden Farbe (0,5, 0,5, 0,8) für einen hellblauen Tageshimmel.
Aktualisieren Sie nun Ihren GDScript-Code, damit er mit dem funktioniert ColorRect Knoten:
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
Aktualisieren Sie die Farbe des BackgroundRect Knoten, um die Tageszeit wiederzugeben. Stellen Sie es beispielsweise beim Übergang zur Nacht auf Schwarz ein, um einen dunklen Hintergrund zu erzeugen. Wenn Sie zum Tag wechseln, stellen Sie es auf Hellblau ein.
Soundeffekte für den Tag-Nacht-Zyklus
Soundeffekte können eine entscheidende Rolle dabei spielen, das Eintauchen und den Realismus Ihres Tag-Nacht-Zyklus in Godot zu verbessern. Sie geben den Spielern akustische Hinweise und machen den Übergang zwischen Tag und Nacht noch fesselnder. Das können Sie ganz einfach Fügen Sie Ihrem Godot-Spiel Soundeffekte hinzu.
Bevor Sie beginnen, stellen Sie sicher, dass Sie über Audioressourcen (Sounddateien) verfügen, die Tag- und Nachtgeräusche darstellen. Beispielsweise können Sie tagsüber Vogelgezwitscher hören und nachts Grillen oder Eulengeschrei.
Fügen Sie in Ihrer Godot-Szene zwei hinzu AudioStreamPlayer2D Knoten und benennen Sie sie entsprechend. Sie können sie so nennen $DaytimeSounds Und $NighttimeSounds.
Aktualisieren Sie nun den GDScript-Code, um die Tonübergänge zwischen Tag und Nacht zu verwalten:
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
Wenn der Tag-Nacht-Timer abläuft, prüft dieser Code, in welche Phase er übergehen soll, und spielt entsprechende Töne ab.
Fühlen Sie sich frei, Ihre zu personalisieren Urheberrechtsfreie Soundeffekte passend zum Thema und der Atmosphäre Ihres Spiels. Sie können auch mehrere Audiospuren überlagern oder Audioeffekte (Hall, Echo usw.) verwenden, um ein reichhaltigeres Hörerlebnis zu schaffen.
Machen Sie Ihre Godot-Spiele mit einem Tag-Nacht-Zyklus spannender
Die Implementierung eines Tag-Nacht-Zyklus in Ihr Godot-Spiel kann das Eintauchen und Engagement der Spieler erheblich verbessern. Es verleiht Ihrer Spielwelt Tiefe, führt dynamische Gameplay-Elemente ein und ermöglicht kreatives Geschichtenerzählen.
Denken Sie daran, den Tag-Nacht-Zyklus an das einzigartige Thema und die Mechanik Ihres Spiels anzupassen, und zögern Sie nicht mit verschiedenen visuellen und Gameplay-Effekten zu experimentieren, um ein wirklich fesselndes Spiel zu schaffen Erfahrung.