Naučte se vytvářet vlastní světelné efekty, které rozjasní vaše hry.

Dynamické osvětlení a stíny mohou zvýšit vizuální kvalitu a herní zážitek z vašich her Godot. Přidávají hloubku, atmosféru a realismus, díky čemuž je váš herní svět pohlcující a poutavý.

S výkonnými funkcemi Godot, jako je CanvasModulate a PointLight2D, je vytváření a přizpůsobení dynamického osvětlení a stínů snadný úkol.

Nastavení hry Godot

Než se ponoříte do dynamického osvětlení, nastavte si základní 2D hru herní engine Godot. Vytvořte novou scénu a přidejte a CharacterBody2D pro hráče.

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.

Uvnitř CharacterBody2D, přidat CollisionShape2D s obdélníkovým tvarem a Sprite2D reprezentovat charakter hráče. Vytvořte také některé platformy pomocí StaticBody2D uzly.

Nyní implementujte pohyb hráče a kolizi s hranicemi obrazovky pomocí GDScript:

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
var velocity = Vector2()

if Input.is_action_pressed('ui_right'):
velocity.x += 1

if Input.is_action_pressed('ui_left'):
velocity.x -= 1

if Input.is_action_pressed('ui_down'):
velocity.y += 1

if Input.is_action_pressed('ui_up'):
velocity.y -= 1

velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)

S tímto kódem se hráč může pohybovat doleva, doprava, nahoru a dolů, přičemž je omezen v rámci hranic obrazovky.

Ztmavte zbytek scény

Abyste dosáhli efektu dynamického osvětlení, musíte ztmavit zbytek scény kromě oblastí osvětlených zdroji světla. Můžete to udělat pomocí Godot's CanvasModulate Vlastnosti.

extends Node2D

const DARKNESS = 0.7

func _ready():
var canvas_modulate = CanvasModulate.new()
canvas_modulate.color = Color(0, 0, 0, DARKNESS)
add_child(canvas_modulate)

Připojte tento skript k novému Node2D přidáno do kořene scény. The CanvasModulate node použije poloprůhledné černé překrytí, které ztmaví celou scénu kromě oblastí osvětlených světly.

Vytvořte konstantní proměnnou TMA, který určuje intenzitu temnoty aplikované na scénu. Úpravou hodnoty TMA, můžete ovládat, jak tmavá bude scéna, když není osvětlena světly. Vyšší hodnota povede k tmavší scéně, zatímco nižší hodnota způsobí, že scéna bude méně tmavá.

Cast Light Shadow

Chcete-li vrhat stíny, musíte nastavit LightOccluder2D uzly na překážkách, které by měly blokovat světlo. Pokud máte například stěny, plošiny nebo jiné objekty, které by měly vrhat stíny, přidejte a LightOccluder2D každému jednomu.

Vytvoř nový LightOccluder2D uzel a upravte jeho tvar tak, aby odpovídal tvaru překážky ve vaší hře. Můžete také upravit vlastnosti okluzoru, např mnohoúhelníky a segmenty k doladění chování vrhání stínů.

Přidejte všesměrová světla

Nyní přidejte a PointLight2D uzel s texturou reprezentující váš světelný zdroj. Bodová světla vyzařují světlo do všech směrů a vytvářejí realistický světelný efekt.

extends PointLight2D

var light_color = Color(1, 1, 0.8)

func _ready():
energy = 2.5
color = light_color

Vlastnosti můžete upravit tak, abyste řídili rozsah a barvu světla vyzařovaného zařízením PointLight2D.

Můžete také vytvořit nebo importovat vlastní texturu světla a definovat tak tvar a vzhled vašeho světelného zdroje. Může to být jednoduchý kruh nebo složitější tvar, v závislosti na atmosféře, kterou chcete vytvořit.

Chcete-li aplikovat texturu na PointLight2D uzel, postupujte takto:

  1. Vybrat PointLight2D uzel ve stromu scény.
  2. Na panelu Inspektor vyhledejte vlastnost Texture pod Textura sekce.
  3. Klikněte na prázdné pole textury a v prohlížeči souborů vyberte požadovanou světlou texturu.

Nyní bude váš světelný zdroj vyzařovat světlo s definovaným tvarem a barvou a dodá vašemu dynamickému osvětlení a stínům vizuálně přitažlivý nádech.

Včetně dalších funkcí

Kromě základního nastavení dynamického osvětlení a stínů můžete zavést různé další funkce, které ještě více pozdvihnou vizuální přitažlivost a herní zážitek. Zde je několik nápadů ke zvážení:

Světelné animace

Oživte své světelné zdroje přidáním animací. Můžete například vytvořit blikající světla pro pochodně nebo svíčky, simulovat pohyb táborového ohně nebo dokonce přidat pulsující efekt do magických koulí.

Cyklus den-noc

Implementujte dynamický cyklus den-noc, který postupně mění intenzitu a barvu světel s postupem času ve hře. Tato funkce může zlepšit ponoření a vytvořit různé nálady v závislosti na denní době.

Vyblednutí světla

Vytvářejte plynulé přechody pro změny intenzity světla, abyste se vyhnuli náhlým posunům, které by mohly přerušit ponor. Postupným slábnutím a zhasínáním světel můžete dosáhnout přirozenějšího a vizuálně příjemnějšího efektu.

Dynamické stíny

Místo použití statických stínů zvažte přidání dynamických stínů k pohybujícím se objektům nebo postavám. Můžete to udělat pomocí dalších světelných zdrojů, které sledují pohyb postav a vytvářejí iluzi aktualizací stínů v reálném čase.

Zvukové efekty bez autorských práv

Zvukové efekty hrají zásadní roli při vytváření živého a dynamického herního světa. Zvažte začlenění zvukové efekty bez autorských práv pro doplnění vašeho dynamického osvětlení a stínů.

Osvědčené postupy pro dynamické osvětlení a stíny

Zatímco dynamické osvětlení a stíny mohou výrazně zlepšit vaši hru, nesprávná implementace může negativně ovlivnit výkon a vizuální kvalitu. Zde je několik doporučených postupů, které je třeba mít na paměti:

Optimalizujte světelné zdroje

Omezte počet aktivních světelných zdrojů na minimum nezbytné pro požadovaný vizuální efekt. Nadměrné osvětlení může výrazně ovlivnit výkon, zejména u zařízení nižší třídy.

Použijte lehké pečení

U statických scén nebo objektů zvažte pečení informací o osvětlení, abyste zlepšili výkon. Lehké pečení předpočítá data osvětlení, což snižuje potřebu výpočtů v reálném čase během hraní.

Rozhodněte se pro jednoduché okluzory

Při nastavování LightOccluder2D uzly, zvolte jednoduché tvary, kdykoli je to možné. Složité okluzory s mnoha vrcholy mohou vést k problémům s výkonem. Kdykoli je to možné, použijte pro okluzory jednoduché polygony nebo čárové segmenty.

Vyřazení a vrstvení

Využijte Godotův systém viditelnosti a vrstvení, abyste zajistili, že světla a stíny budou vypočítány pouze pro viditelné oblasti. Odstranění světel a stínů mimo obrazovku může výrazně zlepšit výkon.

Dodržováním těchto osvědčených postupů a pečlivou implementací dalších funkcí můžete vytvořit úžasné a podmanivé dynamické osvětlení a stíny, které zvednou celkovou kvalitu vaše plošinovka.

Díky dynamickému osvětlení a stínům budou hry Godot ještě poutavější

Dynamické osvětlení a stíny vdechnou život vašemu hernímu světu. Vytvářejí působivější a atmosféričtější prostředí a vtahují hráče hlouběji do herního zážitku. Souhra světla a stínu může vyvolat emoce, nastavit tón a zlepšit vizuální vyprávění vaší hry.

Ať už se jedná o tajemnou temnou kobku nebo poklidnou měsíční noc, dynamické osvětlení obohacuje hru a zanechává na hráčích trvalý dojem.