Lär dig hur du gör dina egna ljuseffekter för att lysa upp dina spel.
Dynamisk belysning och skuggor kan höja den visuella kvaliteten och spelupplevelsen i dina Godot-spel. De lägger till djup, atmosfär och realism, vilket gör din spelvärld mer uppslukande och engagerande.
Med Godots kraftfulla funktioner som CanvasModulate och PointLight2D är det en enkel uppgift att skapa och anpassa dynamisk belysning och skuggor.
Konfigurera Godot-spelet
Innan du dyker in i dynamisk belysning, skapa ett grundläggande 2D-spel i spelmotorn Godot. Skapa en ny scen och lägg till en CharacterBody2D för spelaren.
Koden som används i den här artikeln är tillgänglig i denna GitHub-förråd och är gratis för dig att använda under MIT-licensen.
Inuti CharacterBody2D, Lägg till en CollisionShape2D med en rektangulär form och en Sprite2D för att representera spelarens karaktär. Skapa också några plattformar med hjälp av StaticBody2D knutpunkter.
Implementera nu spelarens rörelse och kollision med skärmgränserna med GDScript:
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var velocity = Vector2()if Input.is_action_pressed('ui_right'):
velocity.x += 1if Input.is_action_pressed('ui_left'):
velocity.x -= 1if Input.is_action_pressed('ui_down'):
velocity.y += 1if Input.is_action_pressed('ui_up'):
velocity.y -= 1
velocity = velocity.normalized() * speed
move_and_collide(velocity * delta)
Med den här koden kan spelaren röra sig åt vänster, höger, upp och ner samtidigt som den är begränsad inom skärmens gränser.
Gör resten av scenen mörkare
För att uppnå effekten av dynamisk belysning måste du göra resten av scenen mörkare förutom de områden som är upplysta av ljuskällorna. Du kan göra detta med Godots CanvasModulate funktion.
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)
Bifoga det här skriptet till ett nytt Nod2D läggs till i roten av scenen. De CanvasModulate noden kommer att applicera en halvtransparent svart överlagring, vilket gör hela scenen mörkare förutom områden som är upplysta av ljus.
Skapa en konstant variabel MÖRKER, som bestämmer intensiteten av mörkret som appliceras på scenen. Genom att justera värdet på MÖRKER, kan du styra hur mörk scenen blir när den inte är upplyst av ljus. Ett högre värde kommer att resultera i en mörkare scen, medan ett lägre värde gör scenen mindre mörk.
Kasta ljus skugga
För att kasta skuggor måste du ställa in LightOccluder2D noder på hinder som ska blockera ljus. Om du till exempel har väggar, plattformar eller andra föremål som ska kasta skuggor, lägg till en LightOccluder2D till var och en.
Skapa en ny LightOccluder2D nod och justera dess form för att matcha hindrets form i ditt spel. Du kan också justera tilltäpparens egenskaper som polygoner och segment för att finjustera beteendet för skuggkastning.
Lägg till rundstrålande ljus
Lägg nu till en PointLight2D nod med en textur som representerar din ljuskälla. Punktljus avger ljus i alla riktningar och skapar en realistisk belysningseffekt.
extends PointLight2D
var light_color = Color(1, 1, 0.8)
func _ready():
energy = 2.5
color = light_color
Du kan anpassa egenskaperna för att kontrollera omfånget och färgen på ljuset som sänds ut av PointLight2D.
Du kan också skapa eller importera en anpassad ljusstruktur för att definiera formen och utseendet på din ljuskälla. Det kan vara en enkel cirkel eller en mer komplex form, beroende på vilken atmosfär du vill skapa.
För att applicera texturen på PointLight2D nod, följ dessa steg:
- Välj PointLight2D nod i scenträdet.
- I panelen Inspektör letar du reda på egenskapen Texture under Textur sektion.
- Klicka på den tomma texturrutan och välj önskad lätt textur från filläsaren.
Nu kommer din ljuskälla att avge ljus med den definierade formen och färgen, vilket ger en visuellt tilltalande touch till din dynamiska belysning och skuggor.
Inklusive ytterligare funktioner
Förutom den grundläggande inställningen av dynamisk belysning och skuggor, kan du introducera olika ytterligare funktioner för att höja den visuella dragningskraften och spelupplevelsen ytterligare. Här är några idéer att överväga:
Ljusanimationer
Väck dina ljuskällor till liv genom att lägga till animationer till dem. Du kan till exempel skapa flimrande ljus för facklor eller ljus, simulera rörelsen av en lägereld eller till och med lägga till en pulserande effekt till magiska klot.
Dag-Natt cykel
Implementera en dynamisk dag-natt-cykel som gradvis ändrar intensiteten och färgen på lamporna allt eftersom tiden i spelet fortskrider. Denna funktion kan förbättra fördjupningen och skapa olika stämningar beroende på tid på dygnet.
Ljus blekning
Skapa mjuka övergångar för ljusintensitetsförändringar för att undvika abrupta skiftningar som kan bryta nedsänkningen. Genom att gradvis tona in och ut ljus kan du uppnå en mer naturlig och visuellt tilltalande effekt.
Dynamiska skuggor
Istället för att använda statiska skuggor, överväg att lägga till dynamiska skuggor till rörliga objekt eller karaktärer. Du kan göra detta genom att använda ytterligare ljuskällor som följer karaktärernas rörelser, vilket ger en illusion av skugguppdateringar i realtid.
Upphovsrättsfria ljudeffekter
Ljudeffekter spelar en avgörande roll för att få din spelvärld att kännas levande och dynamisk. Överväg att införliva upphovsrättsfria ljudeffekter för att komplettera din dynamiska belysning och skuggor.
Bästa metoder för dynamisk belysning och skuggor
Även om dynamisk belysning och skuggor kan förbättra ditt spel avsevärt, kan felaktig implementering påverka prestanda och visuell kvalitet negativt. Här är några bästa metoder att tänka på:
Optimera ljuskällor
Begränsa antalet aktiva ljuskällor till det minimum som krävs för din önskade visuella effekt. För mycket ljus kan påverka prestandan avsevärt, särskilt på lägre enheter.
Använd Light Baking
För statiska scener eller föremål, överväg att baka ljusinformationen för att förbättra prestandan. Light baking förberäknar belysningsdata, vilket minskar behovet av realtidsberäkningar under spelet.
Välj Simple Occluders
Vid installation LightOccluder2D noder, välj enkla former där det är möjligt. Komplexa tilltäppare med många hörn kan leda till prestandaproblem. Använd enkla polygoner eller linjesegment för ockluderare när det är möjligt.
Utslaktning och skiktning
Använd Godots synlighet och lagersystem för att säkerställa att ljus och skuggor endast beräknas för synliga områden. Att ta bort ljus och skuggor utanför skärmen kan förbättra prestandan avsevärt.
Genom att följa dessa bästa metoder och noggrant implementera ytterligare funktioner kan du skapa fantastisk och fängslande dynamisk belysning och skuggor som höjer den övergripande kvaliteten på ditt plattformsspel.
Gör Godot-spel mer engagerande med dynamisk belysning och skuggor
Dynamisk belysning och skuggor blåser liv i din spelvärld. De skapar en mer uppslukande och atmosfärisk miljö som drar spelarna djupare in i spelupplevelsen. Samspelet mellan ljus och skugga kan framkalla känslor, sätta tonen och förbättra det visuella berättandet i ditt spel.
Oavsett om det är en mystisk mörk fängelsehåla eller en lugn månljus natt, berikar dynamisk belysning spelet och lämnar ett bestående intryck på spelarna.