Leer hoe u de viewport van uw game kunt besturen met acties voor pannen, zoomen en schalen.
Een goed ontworpen camerasysteem kan helpen om spelers onder te dompelen in de gamewereld en een beter gevoel van locatie te geven. De camera fungeert als de ogen van de speler, waardoor ze kunnen navigeren en communiceren met de gamewereld.
Het maken van een camerasysteem in Godot is eenvoudig maar krachtig. Je kunt de camera eenvoudig instellen om de speler te volgen, zijn bewegingen beperken tot het spelgebied en zelfs dynamisch zoomen en schalen toevoegen op basis van de gebeurtenissen in het spel.
Een eenvoudig spel maken
Voordat je begint, moet je een 2D-spelwereld en een personage in je spel creëren Godot-game-engine die de camera kan volgen.
Maak een nieuwe 2D-scène en voeg een KarakterBody2D knooppunt. Dit zal dienen als ons spelerskarakter. Voeg in de CharacterBody2D een BotsingVorm2D en stel de vorm in RechthoekVorm2D om de fysieke aanwezigheid van de speler in de wereld te bieden.
De code die in dit artikel wordt gebruikt, is hierin beschikbaar
GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.Voeg ook binnen de CharacterBody2D een toe Sprite2D node en wijs er de sprite-afbeelding van je speler aan toe. Maak een nieuw script dat is gekoppeld aan het CharacterBody2D-knooppunt en voeg de volgende code toe:
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)
Met deze code kan het personage van de speler nu in alle vier de richtingen bewegen en in botsing komen met de platforms.
Implementatie van een volgcamerasysteem
De volgende stap is het maken van een camera die de bewegingen van de speler volgt. Voeg een... toe Camera2D knooppunt als een kind van uw KarakterBody2D knooppunt. Dit zorgt ervoor dat de camera de speler altijd zal volgen. Om de beweging vloeiender te maken, schakelt u de eigenschap position smoothing van de Camera2D knooppunt.
$Camera2D.enabled = true
$Camera2D.position_smoothing_enabled = true
Cameragrenzen en -beperkingen implementeren
Het is vaak belangrijk om het zicht van de speler te beperken tot het spelgebied. Als je dit echter niet goed aanpakt, kan de camera gebieden onthullen die buiten het bereik van het spel vallen. Dit kunnen spaties of onvolledige gebieden zijn.
Godot biedt een gemakkelijke manier om cameralimieten in te stellen en zijn bewegingen binnen het spelgebied te beperken.
In de Camera2D knooppunteigenschappen zijn er vier variabelen: limiet_links, limit_top, limit_right, En limit_bottom. Deze bepalen de grenzen van de camera. Je kunt deze waarden instellen op basis van de grootte van je spelwereld.
$Camera2D.limit_left = 0
$Camera2D.limit_top = 0
$Camera2D.limit_right = your_game_area_width
$Camera2D.limit_bottom = your_game_area_height
Vervangen your_game_area_width En your_game_area_height met de breedte en hoogte van je spelwereld. Dit script beperkt de camera effectief binnen het gewenste gebied, waardoor de speler een zuivere en gerichte gameplay-ervaring krijgt.
Omgaan met zoomen en schalen van de camera
Dynamisch zoomen en schalen kan een belangrijke rol spelen bij het creëren van impactvolle momenten in het spel. U kunt bijvoorbeeld inzoomen op het personage van de speler tijdens een krachtige actie of uitzoomen om een grote vijand of een panoramisch uitzicht op de gamewereld te onthullen.
Godot maakt zoomen en schalen gemakkelijk met de zoom eigendom van de Camera2D knooppunt. Deze eigenschap is een Vector2, waarbij (1, 1) het standaard zoomniveau is. Hogere waarden zoomen uit, waardoor de weergegeven objecten kleiner lijken, terwijl lagere waarden inzoomen, waardoor objecten groter lijken.
Om in te zoomen kunt u gebruik maken van:
$Camera2D.zoom = Vector2(0.7, 0.7)
En om de zoom opnieuw in te stellen, gebruikt u:
$Camera2D.zoom = Vector2(1, 1)
De waarden die u doorgeeft aan Vector2() bepalen het zoomniveau op de X- en Y-as. Een zoomwaarde van (0,7, 0,7) betekent dat de camera inzoomt, terwijl een waarde van (1,5, 1,5) de camera uitzoomt.
Gewoonlijk moet u voor beide assen dezelfde waarde behouden om de beeldverhouding te behouden, maar u kunt met verschillende waarden experimenteren om unieke effecten te bereiken.
Inclusief extra functies
Bij het maken van een camerasysteem voor je game zijn er tal van extra functies die je kunt gebruiken om de ervaring te verbeteren.
Camera schudden
Vooral een veel voorkomend effect dat in veel games wordt gebruikt platformspellen, is het trillen van de camera. Dit wordt meestal gebruikt om impact of intensiteit over te brengen tijdens bepaalde momenten in het spel, zoals een explosie of de krachtige aanval van een personage.
Je kunt deze functie eenvoudig toevoegen in Godot door een schudden() functie. Je kunt de duur en intensiteit van het schudeffect specificeren op basis van de specifieke in-game gebeurtenis.
Geluiden kunnen het gevoel van plaats en beweging in een game enorm versterken. Dit kan zo simpel zijn als het spelen van een swoosh Geluidseffect wanneer de camera snel beweegt of pant, of zo complex als het aanpassen van het volume of de toonhoogte van omgevingsgeluiden of muziektracks op basis van de locatie van de camera of het zoomniveau.
U kunt bijvoorbeeld het volume van een nummer verlagen terwijl de camera uitzoomt om een gevoel van afstand te geven.
Dynamische verlichting
U kunt ook dynamische lichteffecten koppelen aan uw camera. Terwijl je camera door de gamewereld beweegt, kun je de lichtomstandigheden wijzigen om de nieuwe omgevingen weer te geven of om specifieke gebieden of objecten te markeren.
Dit kan dingen zijn zoals het geleidelijk donkerder maken van de scène terwijl de camera in een grot duikt, of het markeren van een belangrijk object met een schijnwerper.
Camera-overgangseffecten
Bij het schakelen tussen camera's kunt u verschillende overgangseffecten creëren. Dit kan een simpele cut zijn waarbij het beeld direct van de ene camera naar de andere springt of een fade waarbij het beeld geleidelijk overgaat van de ene camera naar de andere.
U kunt complexere overgangen gebruiken, zoals vegen, schuiven of iris, met extra codering en animatie.
Best practices voor het toevoegen van een camerasysteem
Wanneer je een camerasysteem aan je game toevoegt, zijn er verschillende best practices waarmee je rekening moet houden om de best mogelijke game-ervaring te garanderen.
Vermijd abrupte camerabewegingen
Plotselinge verschuivingen in het cameraperspectief kunnen spelers desoriënterend maken en de gameplay verstoren. Streef altijd naar vloeiende camera-overgangen om de onderdompeling te behouden.
Beperk camerabewegingen
Hoewel een cameratrilling impact kan hebben op bepaalde gebeurtenissen, kan te veel het spel moeilijk te volgen en ongemakkelijk maken om te spelen. Gebruik dit effect spaarzaam en met mate.
Test verschillende zoomniveaus
Verschillende games en verschillende situaties binnen een game kunnen verschillende zoomniveaus vereisen. Test grondig om het meest geschikte zoomniveau voor elke situatie te vinden.
Overweeg zorgvuldig de cameragrenzen
Cameragrenzen moeten zorgvuldig worden ingesteld om te passen bij het ontwerp van uw niveaus. Je wilt niet dat de speler buiten de gamewereld kijkt of belangrijke elementen buiten beeld mist.
Geef prioriteit aan spelerservaring
Het belangrijkste doel van het camerasysteem moet altijd zijn om de spelerservaring te verbeteren. Of het nu gaat om het beste zicht op de actie, het benadrukken van belangrijke momenten of het helpen van de speler bij het navigeren door de omgeving, de camera moet altijd bijdragen aan een betere gameplay-ervaring.
Godot-spellen aantrekkelijker maken met camerasysteem
Een goed geïmplementeerd camerasysteem kan de algehele game-ervaring verbeteren. Het kan de actie benadrukken, helpen bij het vertellen van verhalen en een meer meeslepende ervaring bieden.
Door te bepalen wat de speler ziet en wanneer hij het ziet, kun je zijn reis door de gamewereld begeleiden en de gameplay dynamischer en boeiender maken.