Voeg prikkels toe voor het hoofdpad of nevenmissies van je game, met belonende verzamelobjecten.

Het toevoegen van power-ups en verzamelobjecten aan je Godot-spel kan de ervaring van de speler aanzienlijk verbeteren, waardoor het boeiender en spannender wordt. Power-ups kunnen de speler speciale vaardigheden of tijdelijke voordelen geven, terwijl verzamelobjecten als beloning kunnen dienen, de score van de speler kunnen verhogen of andere voordelen kunnen bieden.

Gelukkig is het maken van power-ups en verzamelobjecten in Godot eenvoudig, dankzij de intuïtieve scripttaal en ingebouwde physics-engine.

Het Godot-spel opzetten

Maak om te beginnen een 2D-game in de Godot-game-engine en stel het personage van de speler in. Maak een nieuwe scène en voeg een KarakterBody2D knooppunt. Binnen in de KarakterBody2D, Voeg een... toe BotsingVorm2D met een rechthoekige vorm om het botsingsgebied van de speler weer te geven en een Sprite2D om het karakter van de speler weer te geven.

De code voor deze demo is beschikbaar in zijn

instagram viewer
GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.

Schrijf nu de GDScript-code om spelersbewegingen en botsingen met de schermgrenzen te verwerken. Hier is de volledige code voor spelerbewegingen:

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)

Met deze code kan de speler met de pijltjestoetsen naar links, rechts, omhoog en omlaag bewegen. Het zorgt er ook voor dat de speler niet te snel beweegt door de snelheidsvector te normaliseren en een snelheidsfactor toe te passen.

Creëer bovendien vijandelijke objecten met hun eigen botsingsgebieden en sprites. Om vijandelijke bewegingen aan te kunnen, kun je een soortgelijke gebruiken _fysica_proces functioneren als speler.

Verzamelobjecten maken

Verzamelobjecten zijn essentieel in veel spellen, en een veelvoorkomend type zijn munten. Maak een verzamelbare munt die de score van de speler met 20 punten verhoogt wanneer deze wordt verzameld.

Maak eerst een nieuwe scène en voeg een Gebied2D node als verzamelmunt. Binnen in de Gebied2D, Voeg een... toe BotsingVorm2D met een cirkelvorm om het botsingsgebied weer te geven en een Sprite2D om de munt weer te geven.

Voeg vervolgens de volgende GDScript-code toe aan het spelerscript:

extends CharacterBody2D

var score = 0

func _on_area_2d_body_entered(body):
get_parent().get_node("Collectibles").queue_free()
score += 20

Deze code maakt gebruik van de _on_area_2d_body_entered signaal om te detecteren wanneer het personage van de speler het botsingsgebied van de verzamelmunt binnengaat. Als het het personage van de speler detecteert, verzamelen ze de munt (de oproep naar wachtrij_vrij() verwijdert het van de scène) en verhoog hun score met 20 punten.

Power-ups maken

Power-ups kunnen je spel spannender maken door de speler tijdelijke voordelen of vaardigheden te bieden. Maak een power-up die een timer van 10 seconden activeert wanneer deze wordt verzameld. Als de speler binnen die tijd een vijand aanraakt, zal deze de vijand vernietigen.

Om de power-up te maken, maak je een nieuwe scène en voeg je een Gebied2D knooppunt. Binnen in de Gebied2D, Voeg een... toe BotsingVorm2D met een rechthoekige vorm en een Sprite2D om de power-up weer te geven.

Voeg nu de volgende code toe aan uw spelerscript:

extends CharacterBody2D

var timer_duration = 10
var power_up_active = false

func _on_powerups_body_entered(body):
get_parent().get_node("Powerups").queue_free()
power_up_active = true

# Start the timer
await get_tree().create_timer(10.0).timeout
power_up_active = false

func _on_enemy_body_entered(body):
if power_up_active:
get_parent().get_node("Enemy").queue_free()
else:
queue_free()

Deze code maakt gebruik van de _on_powerups_body_entered signaal om te detecteren wanneer het personage van de speler de power-up verzamelt. Wanneer ze dat doen, wordt de power-up van de scène verwijderd en wordt de power_up_actief variabel naar waar.

De functie start uiteindelijk een timer met behulp van wachten En create_timer, met een duur van 10 seconden. Als het personage van de speler gedurende deze tijd een vijand aanraakt, vernietigen ze deze.

Collectibles weergeven Verzameld

Het weergeven van het aantal verzamelobjecten dat de speler heeft verzameld, kan een gevoel van prestatie en vooruitgang toevoegen. Om dit te doen, begint u met het maken van een Etiket node en positioneer het in de linkerbovenhoek van het scherm.

Voeg vervolgens de volgende GDScript-code toe om de labeltekst bij te werken wanneer de speler een verzamelobject verzamelt:

extends Label

func _ready():
self.text = "Collectibles: 0"

Op Player.gd-script:

extends CharacterBody2D

var bar

func _ready():
bar = get_parent().get_node("Label")

func _physics_process(delta):
bar.text = "Collectibles: " + str(score / 20)

Deze code werkt de tekst van het label bij met het aantal verkregen verzamelobjecten, dat je kunt berekenen door de score van de speler te delen door 20.

Inclusief extra functies

Er zijn verschillende andere functies die je aan je power-ups en verzamelsysteem kunt toevoegen om je spel verder te verbeteren. Hier zijn een paar ideeën:

Meerdere niveaus van power-ups

In plaats van slechts één type power-up te hebben, kun je verschillende niveaus van power-ups introduceren die steeds krachtigere vaardigheden opleveren. Je kunt bijvoorbeeld een basissnelheidsboost-power-up upgraden naar een supersnelle power-up die de speler nog sneller maakt.

Gecombineerde power-ups

Maak combinaties van power-ups die samen unieke en krachtige effecten bieden. Moedig spelers aan om strategieën te bedenken en te experimenteren met verschillende power-upcombinaties voor maximaal voordeel.

Power-ups beperken

Implementeer een cooldown of een limiet voor hoe vaak een speler een specifieke power-up kan verzamelen. Dit voegt een element van besluitvorming toe voor de speler, aangezien ze het juiste moment moeten kiezen om de power-up te activeren.

Verzamelbare variëteiten

Ontwerp verschillende soorten verzamelobjecten met verschillende beloningen. Sommige verzamelobjecten kunnen zorgen voor extra levens, tijdelijke verbeteringen of speciale functies ontgrendelen jouw platformgame.

Best practices voor het implementeren van power-ups en verzamelobjecten

Houd bij het implementeren van power-ups en verzamelvoorwerpen in je Godot-spel rekening met de volgende best practices:

Balans en speltesten

Test je power-ups en verzamelobjecten uitgebreid om er zeker van te zijn dat ze geen onevenwichtigheden in het spel veroorzaken. Pas de effecten en beloningen aan om spelers een eerlijke en plezierige ervaring te bieden.

Visuele en audiofeedback

Gebruik duidelijke en visueel aantrekkelijke pictogrammen of sprites om power-ups en verzamelobjecten weer te geven. Voeg bovendien geschikt toe auteursrechtvrije geluidseffecten om bevredigende feedback te geven wanneer spelers ze verzamelen.

Gebruikersinterface (UI)

Ontwerp een overzichtelijke en intuïtieve gebruikersinterface die relevante informatie weergeeft over power-ups en verzamelvoorwerpen. Toon de resterende tijd voor actieve power-ups, het aantal verzamelde verzamelobjecten en alle andere relevante details.

Samenhang

Zorg ervoor dat power-ups en verzamelobjecten passen bij het algemene thema en de mechanica van je game. Consistentie in ontwerp en implementatie helpt een coherente game-ervaring te behouden.

Opslaan en laden

Als je game power-ups of verzamelobjecten bevat die tijdens gamesessies blijven bestaan, implementeer dan een opslag- en laadsysteem om de voortgang van de speler te behouden. Dit zorgt voor een naadloze ervaring en motiveert spelers om terug te keren naar het spel.

Door je aan deze best practices te houden, kun je een gepolijst en aantrekkelijk power-up- en verzamelsysteem maken dat de gameplay van je Godot-spel verrijkt en het leuker maakt voor spelers.

Godot-spellen aantrekkelijker maken met power-ups en verzamelobjecten

Het toevoegen van power-ups en verzamelobjecten aan je Godot-game kan de betrokkenheid en herspeelbaarheid aanzienlijk vergroten. Power-ups bieden spelers spannende en tijdelijke voordelen.

Door zorgvuldig power-ups en verzamelobjecten te ontwerpen en te implementeren, kun je een meer meeslepende en plezierige game-ervaring voor je spelers creëren. De flexibiliteit en eenvoud van Godot maken het voor game-ontwikkelaars gemakkelijk om boeiende power-ups en verzamelobjecten te maken die de mechanica en het plezier van hun game verbeteren.