Přidejte atmosféru a jedinečné herní mechanismy s východem a pádem slunce.
Cyklus dne a noci může do vašich her přidat pohlcující prvek, zpestřit vizuály a vytvořit zajímavou mechaniku. Hry jako Minecraft, Animal Crossing a Don’t Starve tuto techniku efektivně využívají a můžete zvážit její přidání do svých vlastních her, zejména těch s prvky v reálném čase.
Naštěstí v Godot 4 je dosažení cyklu den-noc snazší než kdy jindy.
Nastavení hry Godot
Než se ponoříte do implementace cyklu den-noc, nastavte základy pro svou hru. Začněte vytvořením nového 2D projektu v Godot 4. Nastavte svůj projekt s potřebnými nastaveními projektu.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Nyní vytvořte postavu hráče. Ve své scéně přidejte a CharacterBody2D. Uvnitř přidejte a CollisionShape2D s tvarem obdélníku a Sprite2D. To bude vizuálně reprezentovat vaši postavu.
Chcete-li přehrávači umožnit pohyb, můžete použít následující kód GDScript. Připojte tento skript k uzlu postavy:
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)
Tento kód umožní hráči pohybovat se doleva, doprava, nahoru a dolů pomocí kláves se šipkami. Můžete také přidat nějaké nepřátele aby se váš hráč vyhnul. Použití StaticBody2D uzly pro tyto nepřátele a podle toho upravte jejich tvary a pozice.
Přidejte časovač pro denní a noční cyklus
Chcete-li vytvořit cyklus den-noc, potřebujete časovač, který běží nepřetržitě a střídá denní a noční fáze. Tento časovač bude zodpovědný za sledování plynutí času ve vaší hře.
Přidejte do své Godot scény uzel časovače. Můžete to udělat kliknutím pravým tlačítkem na panel Scéna a výběrem Přidat uzela poté hledat Časovač v knihovně uzlů.
Přejmenujte uzel Timer na něco smysluplného jako DayNightTimer pro přehlednost. Nakonfigurujte vlastnosti uzlu Timer v panelu Inspektor. Konkrétně nastavte Čekací doba vlastnost na 0 (toto je počáteční zpoždění před spuštěním časovače) a zkontrolujte Jeden výstřel vlastnost, aby se časovač opakoval.
Nyní přidejte kód GDScript, který spravuje cyklus den-noc:
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
V _připraven funkci, spusťte DayNightTimer když se scéna načte, aby nastartovala cyklus den-noc. The _on_DayNightTimer_timeout Funkce se spustí pokaždé, když časovač dosáhne nuly, což je čas na přechod mezi dnem a nocí.
Dodržením těchto kroků získáte funkční časovač den-noc, který přepíná mezi dnem a nocí, což vám umožní přidat dynamické herní prvky a vizuální změny do vaší hry Godot na základě denní doby.
Přizpůsobení pozadí pro den a noc
Chcete-li doplnit svůj denní a noční cyklus, potřebujete způsob, jak vizuálně znázornit přechody mezi dnem a nocí. Můžete použít vestavěný ColorRect uzel pro vytvoření vhodného pozadí pro den i noc. Tento přístup umožňuje plynulejší přechody a větší kontrolu nad vizuály.
Ve scéně Godota přidejte a ColorRect uzel. Tento uzel bude sloužit jako pozadí, které mění barvu, aby představovalo den a noc. Přejmenujte ColorRect uzel na něco smysluplného jako BackgroundRect. Umístěte ji jako vrstvu pozadí a ujistěte se, že pokrývá celý výřez.
V panelu Inspektor nastavte Barva vlastnost na vaši počáteční barvu pozadí, která by měla představovat denní dobu. Můžete například použít Barva (0,5, 0,5, 0,8) pro světle modrou denní oblohu.
Nyní aktualizujte svůj kód GDScript, aby fungoval s ColorRect uzel:
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
Aktualizujte barvu BackgroundRect uzel odrážející denní dobu. Nastavte ji například na černou při přechodu do noci, čímž vytvoříte tmavé pozadí. Při přechodu na den nastavte na světle modrou.
Zvukové efekty pro cyklus den-noc
Zvukové efekty mohou hrát klíčovou roli při zlepšování ponoření a realismu vašeho denního a nočního cyklu v Godot. Poskytují hráčům sluchové podněty, díky nimž je přechod mezi dnem a nocí podmanivější. Můžete snadno přidejte zvukové efekty do své hry Godot.
Než začnete, ujistěte se, že máte zvukové zdroje (zvukové soubory), které představují denní a noční zvuky. Například můžete mít přes den zvuky cvrlikání ptáků a v noci cvrčky nebo houkání sovy.
Ve své Godot scéně přidejte dva AudioStreamPlayer 2D uzly a vhodně je pojmenovat. Můžete je nějak pojmenovat $DaytimeSounds a $NighttimeSounds.
Nyní aktualizujte kód GDScript, abyste mohli spravovat zvukové přechody mezi dnem a nocí:
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
Když časový limit den-noc vyprší, tento kód zkontroluje, do které fáze by měl přejít, a přehraje odpovídající zvuky.
Neváhejte a přizpůsobte si svůj zvukové efekty bez autorských práv aby odpovídala tématu a atmosféře vaší hry. Můžete také vrstvit více zvukových stop nebo používat zvukové efekty (reverb, echo atd.) a vytvořit tak bohatší poslechový zážitek.
Udělejte ze svých her Godot poutavější díky cyklu den-noc
Implementace cyklu den-noc ve vaší hře Godot může výrazně zlepšit ponoření a zapojení hráče. Dodává vašemu hernímu světu hloubku, zavádí dynamické herní prvky a umožňuje kreativní vyprávění příběhů.
Nezapomeňte přizpůsobit cyklus dne a noci jedinečnému tématu a mechanismu vaší hry a neváhejte experimentovat s různými vizuálními a herními efekty a vytvořit skutečně podmanivou hru Zkušenosti.