Lær, hvordan du laver dine egne lyseffekter for at lyse op i dine spil.
Dynamisk belysning og skygger kan højne den visuelle kvalitet og spiloplevelsen af dine Godot-spil. De tilføjer dybde, atmosfære og realisme, hvilket gør din spilverden mere fordybende og engagerende.
Med Godots kraftfulde funktioner som CanvasModulate og PointLight2D er det en nem opgave at skabe og tilpasse dynamisk belysning og skygger.
Opsætning af Godot-spillet
Inden du dykker ned i dynamisk belysning, skal du oprette et grundlæggende 2D-spil Godot spilmotoren. Opret en ny scene og tilføj en CharacterBody2D for spilleren.
Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.
Inde i CharacterBody2D, Tilføj en CollisionShape2D med en rektangulær form og en Sprite2D at repræsentere spillerens karakter. Opret også nogle platforme ved hjælp af StaticBody2D noder.
Implementer nu spillerens bevægelse og kollision med skærmgrænserne ved hjælp af 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 denne kode kan spilleren bevæge sig til venstre, højre, op og ned, mens den er begrænset inden for skærmens grænser.
Gør resten af scenen mørkere
For at opnå effekten af dynamisk belysning skal du gøre resten af scenen mørkere bortset fra de områder, der er oplyst af lyskilderne. Du kan gøre dette ved at bruge Godot's Lærredsmoduler 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)
Vedhæft dette script til et nyt Node2D tilføjet i roden af scenen. Det Lærredsmoduler node vil anvende en semi-transparent sort overlejring, der gør hele scenen mørkere undtagen områder, der er oplyst af lys.
Opret en konstant variabel MØRKE, som bestemmer intensiteten af mørket anvendt på scenen. Ved at justere værdien af MØRKE, kan du kontrollere, hvor mørk scenen bliver, når den ikke er oplyst af lys. En højere værdi vil resultere i en mørkere scene, mens en lavere værdi vil gøre scenen mindre mørk.
Kast lys skygge
For at kaste skygger skal du konfigurere LightOccluder2D noder på forhindringer, der skal blokere lys. Hvis du for eksempel har vægge, platforme eller andre genstande, der skal kaste skygger, skal du tilføje en LightOccluder2D til hver enkelt.
Opret en ny LightOccluder2D node, og juster dens form, så den matcher forhindringens form i dit spil. Du kan også justere okkluderens egenskaber som f.eks polygoner og segmenter at finjustere skyggekastadfærden.
Tilføj rundstrålende lys
Tilføj nu en PointLight2D node med en tekstur, der repræsenterer din lyskilde. Punktlys udsender lys i alle retninger og skaber en realistisk belysningseffekt.
extends PointLight2D
var light_color = Color(1, 1, 0.8)
func _ready():
energy = 2.5
color = light_color
Du kan tilpasse egenskaberne for at kontrollere rækkevidden og farven på det lys, der udsendes af PointLight2D.
Du kan også oprette eller importere en tilpasset lystekstur for at definere formen og udseendet af din lyskilde. Det kan være en simpel cirkel eller en mere kompleks form, afhængigt af den atmosfære, du ønsker at skabe.
For at anvende teksturen på PointLight2D node, følg disse trin:
- Vælg PointLight2D node i scenetræet.
- I Inspektør-panelet skal du finde egenskaben Tekstur under Struktur afsnit.
- Klik på det tomme teksturfelt, og vælg din ønskede lystekstur fra filbrowseren.
Nu vil din lyskilde udsende lys med den definerede form og farve, hvilket tilføjer et visuelt tiltalende touch til din dynamiske belysning og skygger.
Inklusiv yderligere funktioner
Ud over den grundlæggende opsætning af dynamisk belysning og skygger, kan du introducere forskellige ekstra funktioner for at løfte den visuelle appel og gameplay-oplevelsen yderligere. Her er nogle ideer til at overveje:
Lys animationer
Giv dine lyskilder liv ved at tilføje animationer til dem. For eksempel kan du skabe flimrende lys til fakler eller stearinlys, simulere bevægelsen af et lejrbål eller endda tilføje en pulserende effekt til magiske kugler.
Dag-nat cyklus
Implementer en dynamisk dag-nat-cyklus, der gradvist ændrer lysets intensitet og farve, efterhånden som spillets tid skrider frem. Denne funktion kan forbedre fordybelsen og skabe forskellige stemninger afhængigt af tidspunktet på dagen.
Lys fading
Skab jævne overgange til lysintensitetsændringer for at undgå bratte skift, der kan bryde nedsænkningen. Ved gradvist at fade lys ind og ud, kan du opnå en mere naturlig og visuelt tiltalende effekt.
Dynamiske skygger
I stedet for at bruge statiske skygger, kan du overveje at tilføje dynamiske skygger til bevægelige objekter eller tegn. Du kan gøre dette ved at bruge yderligere lyskilder, der følger figurernes bevægelser, hvilket giver en illusion af skyggeopdateringer i realtid.
Copyright-fri lydeffekter
Lydeffekter spiller en afgørende rolle for at få din spilverden til at føles levende og dynamisk. Overvej at indarbejde ophavsretsfri lydeffekter for at komplementere din dynamiske belysning og skygger.
Bedste praksis for dynamisk belysning og skygger
Mens dynamisk belysning og skygger i høj grad kan forbedre dit spil, kan forkert implementering påvirke ydeevnen og den visuelle kvalitet negativt. Her er nogle bedste fremgangsmåder at huske på:
Optimer lyskilder
Begræns antallet af aktive lyskilder til det minimum, der er nødvendigt for din ønskede visuelle effekt. Overdreven lys kan påvirke ydeevnen betydeligt, især på lavere enheder.
Brug let bagning
For statiske scener eller genstande kan du overveje at bage lysoplysningerne for at forbedre ydeevnen. Let bagning forudberegner belysningsdataene, hvilket reducerer behovet for realtidsberegninger under gameplay.
Vælg Simple Occluders
Ved opsætning LightOccluder2D noder, vælg simple former, hvor det er muligt. Komplekse okkludere med mange hjørner kan føre til ydeevneproblemer. Brug simple polygoner eller linjesegmenter til okkluderinger, når det er muligt.
Nedskæring og lagdeling
Udnyt Godots synligheds- og lagdelingssystem til at sikre, at lys og skygger kun beregnes for synlige områder. At fjerne lys og skygger uden for skærmen kan forbedre ydeevnen betydeligt.
Ved at følge disse bedste fremgangsmåder og omhyggeligt implementere yderligere funktioner, kan du skabe fantastisk og fængslende dynamisk belysning og skygger, der løfter den overordnede kvalitet af dit platformspil.
Gør Godot-spil mere engagerende med dynamisk belysning og skygger
Dynamisk belysning og skygger puster liv i din spilverden. De skaber et mere fordybende og atmosfærisk miljø, der trækker spillere dybere ind i spiloplevelsen. Samspillet mellem lys og skygge kan fremkalde følelser, sætte tonen og forbedre den visuelle historiefortælling i dit spil.
Uanset om det er et mystisk mørkt fangehul eller en fredfyldt måneskin nat, beriger dynamisk belysning gameplayet og efterlader et varigt indtryk på spillerne.