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:

instagram viewer
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)

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 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

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.