Förbättra din spelupplevelse i Godot genom att införliva ett hälso- och skadesystem.
Ett hälso- och skadesystem tillåter spelare att ta skada och förlora hälsopoäng när de stöter på hinder eller fiender. Det gör det också möjligt för dem att återställa hälsan på olika sätt, såsom power-ups eller hälsopaket.
Godot, en populär spelmotor med öppen källkod, erbjuder ett enkelt och flexibelt sätt att implementera sådana system. Du kan enkelt skapa ett 2D-spel med en spelarkaraktär, en fiende och ett hälsofält för att visuellt representera spelarens hälsa.
Konfigurera Godot-spelet
Ställ först in den grundläggande projektstrukturen i spelmotorn Godot och skapa de nödvändiga noderna.
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.
Skapa en ny scen för spelarkaraktären. Lägg till en KinematicBody2D nod, och inuti den, lägg till en CollisionShape2D med en rektangelform för att representera spelarens hitbox. Bifoga en Sprite nod till KinematicBody2D för att visa spelarens karaktär.
# Player.gd
extends KinematicBody2Dconst SPEED = 200
var velocity = Vector2.ZERO
var health = 100func _physics_process(delta):
velocity.x = 0
velocity.y = 0if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEEDif Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED
move_and_collide(velocity * delta)
Nu har du en grundläggande spelarkaraktär i ditt Godot-projekt. Du kan flytta spelaren med hjälp av piltangenterna, men det finns inget hälsosystem på plats ännu.
Designa Health Bar UI Elements
Nu kan du lägga till UI-element för att visuellt representera spelarens hälsa. Godot tillhandahåller en inbyggd kontroll som kallas TextureProgress som fungerar bra för detta ändamål.
Skapa en ny nod för HUD (heads-up display). Lägg till en CanvasLayer nod, och inuti den, lägg till en TextureProgress nod. Anpassa utseendet på TextureProgress nod enligt ditt spels stil och tema.
För att visa hälsofältet med hjälp av TextureProgress i HUD måste du tilldela en textur till den. TextureProgress använder två texturer: en för bakgrunden och en annan för den fyllda delen (framsteg).
I inspektörspanelen letar du upp Textur sektion. Under Textur, hittar du fastigheter som heter Under och Över. Klicka på Ladda för varje egenskap och välj motsvarande bilder.
Bifoga ett skript till HUD-scenen för att uppdatera hälsofältet baserat på spelarens hälsa:
# HUD.gd
extends CanvasLayeronready var healthBar := $TextureProgress
func _ready():
update_health_bar()
func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health
Hantera spelarens hälsa
För att minska spelarens hälsa när de passerar skärmens gräns kan du lägga till en villkorskontroll med hjälp av ett if-uttalande. Om spelaren går utanför skärmen kan du minska deras hälsa. Så här kan du uppnå detta:
# player.gd
extends KinematicBody2Dconst SPEED = 200
const DAMAGE_AMOUNT = 0.1var velocity = Vector2.ZERO
var health = 100# Screen boundaries
var screen_size
var margin = 20func _ready():
screen_size = get_viewport_rect().sizefunc _physics_process(delta):
#... (existing movement code)
move_and_collide(velocity * delta)var c1 = position.x < -margin
var c2 = position.x > screen_size.x + margin
var c3 = position.y < -margin
var c4 = position.y > screen_size.y + margin# Check if the player is outside the screen boundaries
if c1 or c2 or c3 or c4:
take_damage_on_screen_exit()
func take_damage_on_screen_exit():
health -= DAMAGE_AMOUNT
if health <= 0:
health = 0
# Game over logic here
update_health_ui()
Lägg till update_health_ui() funktion i spelare.gd skript för att anropa HUD-skriptet och uppdatera hälsofältet.
# Player.gd
extends KinematicBody2D#... (other code)
func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()
Med dessa ändringar kommer spelaren nu att ta skada när de passerar skärmgränsen, och hälsofältets användargränssnitt kommer att uppdateras därefter.
Inklusive ytterligare funktioner
Hälso- och skadesystemet kan utökas med olika ytterligare funktioner för att förbättra spelupplevelsen. Några idéer inkluderar:
Hälsa Pickuper
Implementera hälsoupptagningar som låter spelaren återställa sin hälsa när de samlas in. Hälso-pickuper kan vara samlarobjekt utspridda i spelvärlden eller belöningar för att besegra fiender.
När spelaren interagerar med en hälsoupptagning bör deras hälsa öka med ett visst belopp, upp till ett maxvärde. Du kan använda ett nytt skript för hälsoupphämtningsobjektet och hantera kollisions- och hälsoåterställningslogiken.
Invincibility Power-Ups
Skapa power-ups som ger spelaren tillfällig oövervinnlighet under en begränsad tid. När spelaren samlar in en oövervinnerlig power-up blir de immuna mot skador från fiender eller andra faror.
Implementera en timer för att spåra den återstående varaktigheten av oövervinnlighetstillståndet, och när timern tar slut återgår spelaren till sitt sårbara tillstånd.
Olika fiendetyper
Designa en mängd olika fiender med olika attackmönster, skadevärden och beteenden. Varje fiendetyp kan utgöra unika utmaningar för spelaren och kräver olika strategier för att besegra.
Till exempel kan vissa fiender röra sig snabbare, ge mer skada eller ha specifika svaga punkter som spelaren kan utnyttja. Att lägga till mångfald till fiendens möten håller spelet engagerande och förhindrar att det blir monotont.
Hälsoförnyelse
Implementera hälsoregenerering över tid för att belöna spelare för att de undviker skada. När spelaren inte tar skada under en viss tid, återskapas deras hälsa gradvis till en viss tröskel.
Se dock till att regenereringshastigheten är balanserad för att undvika situationer där spelaren helt enkelt kan vänta på att deras hälsa ska återhämta sig helt utan utmaning.
Ljud och visuell feedback
Ge övertygande ljud och visuell feedback när spelaren tar skada, återställer hälsan eller besegrar fiender.
Effektfull upphovsrättsfria ljudeffekter, skärmskakningar, partikeleffekter och visuella signaler kan förbättra spelarens fördjupning och få hälso- och skadesystemet att kännas mer dynamiskt och engagerande.
Kom ihåg att överväga den övergripande balansen mellan de ytterligare funktionerna du introducerar. Fortsätt att testa och samla in feedback för att säkerställa att spelet förblir utmanande, njutbart och med bra tempo under hela spelet.
Gör Godot-spel mer engagerande med hälsa och skadesystem
Att integrera ett hälso- och skadesystem i ditt Godot-spel ger djup och utmaning, vilket gör spelet mer engagerande för spelarna. Det introducerar ett risk-belöningselement, eftersom spelare måste lägga strategi och hantera sin hälsa effektivt för att gå vidare i spelet.
Dessutom ger den visuella representationen av hälsofältet spelare viktig feedback om deras nuvarande tillstånd, vilket förstärker deras känsla av nedsänkning.