Forbedre spillopplevelsen din i Godot ved å innlemme et helse- og skadesystem.

Et helse- og skadesystem lar spillere ta skade og miste helsepoeng når de møter hindringer eller fiender. Det gjør dem også i stand til å gjenopprette helsen på ulike måter, for eksempel power-ups eller helsepakker.

Godot, en populær åpen kildekode-spillmotor, gir en enkel og fleksibel tilnærming til implementering av slike systemer. Du kan enkelt lage et 2D-spill med en spillerkarakter, en fiende og en helselinje for å visuelt representere spillerens helse.

Sette opp Godot-spillet

Først setter du opp den grunnleggende prosjektstrukturen i Godot-spillmotoren og opprette de nødvendige nodene.

Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

Lag en ny scene for spillerkarakteren. Legg til en KinematicBody2D node, og inni den legger du til en CollisionShape2D med en rektangelform for å representere spillerens treffboks. Legg ved en Sprite node til KinematicBody2D for å vise spillerens karakter.

# Player.gd
extends KinematicBody2D

const SPEED = 200

var velocity = Vector2.ZERO
var health = 100

func _physics_process(delta):
velocity.x = 0
velocity.y = 0

if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEED

if Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED

move_and_collide(velocity * delta)

Nå har du en grunnleggende spillerkarakter i ditt Godot-prosjekt. Du kan flytte spilleren ved hjelp av piltastene, men det er ikke noe helsesystem på plass ennå.

Designe Health Bar UI Elements

Nå kan du legge til UI-elementer for å visuelt representere spillerens helse. Godot gir en innebygd kontroll kalt TeksturProgress som fungerer bra til dette formålet.

Opprett en ny node for HUD (heads-up display). Legg til en CanvasLayer node, og inni den legger du til en TeksturProgress node. Tilpass utseendet til TeksturProgress node i henhold til spillets stil og tema.

For å vise helselinjen ved å bruke TeksturProgress i HUD må du tilordne en tekstur til den. TeksturProgress bruker to teksturer: en for bakgrunnen og en annen for den fylte delen (fremdrift).

I inspektørpanelet finner du Tekstur seksjon. Under Tekstur, finner du eiendommer som heter Under og Over. Klikk på Laste for hver eiendom og velg de tilsvarende bildene.

Legg ved et skript til HUD-scenen for å oppdatere helselinjen basert på spillerens helse:

# HUD.gd
extends CanvasLayer

onready var healthBar := $TextureProgress

func _ready():
update_health_bar()

func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health

Håndtering av spillerhelse

For å redusere spillerens helse når de krysser skjermgrensen, kan du legge til en betinget sjekk ved hjelp av en if-erklæring. Hvis spilleren går utover skjermen, kan du redusere helsen deres. Slik kan du oppnå dette:

# player.gd
extends KinematicBody2D

const SPEED = 200
const DAMAGE_AMOUNT = 0.1

var velocity = Vector2.ZERO
var health = 100

# Screen boundaries
var screen_size
var margin = 20

func _ready():
screen_size = get_viewport_rect().size

func _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()

Legg til update_health_ui() funksjon i spiller.gd skript for å kalle HUD-skriptet og oppdatere helselinjen.

# Player.gd
extends KinematicBody2D

#... (other code)

func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()

Med disse endringene vil spilleren nå ta skade når de krysser skjermgrensen, og brukergrensesnittet for helselinjen vil oppdateres tilsvarende.

Inkludert tilleggsfunksjoner

Helse- og skadesystemet kan utvides med ulike tilleggsfunksjoner for å forbedre spillopplevelsen. Noen ideer inkluderer:

Helse pickups

Implementer helsehentinger som lar spilleren gjenopprette helsen når den samles inn. Helse pickuper kan være samleobjekter spredt over hele spillverdenen eller belønninger for å beseire fiender.

Når spilleren samhandler med en helse-pickup, bør helsen øke med et visst beløp, opp til en maksimal verdi. Du kan bruke et nytt skript for helsehentingselementet og håndtere kollisjons- og helsegjenopprettingslogikken.

Invincibility Power-Ups

Lag power-ups som gir spilleren midlertidig uovervinnelighet i en begrenset periode. Når spilleren samler en uovervinnelig power-up, blir de immune mot skade fra fiender eller andre farer.

Implementer en timer for å spore den gjenværende varigheten av uovervinnelighetstilstanden, og når timeren går ut, går spilleren tilbake til sin sårbare tilstand.

Ulike fiendetyper

Design en rekke fiender med forskjellige angrepsmønstre, skadeverdier og oppførsel. Hver fiendetype kan utgjøre unike utfordringer for spilleren og kreve forskjellige strategier for å beseire.

For eksempel kan noen fiender bevege seg raskere, gjøre mer skade eller ha spesifikke svake punkter som spilleren kan utnytte. Å legge til mangfold til fiendemøter holder spillet engasjerende og hindrer det i å bli monotont.

Helsefornyelse

Implementer helseregenerering over tid for å belønne spillere for å unngå skade. Når spilleren ikke tar skade for en bestemt varighet, regenereres helsen gradvis til en viss terskel.

Sørg imidlertid for at regenereringshastigheten er balansert for å unngå situasjoner der spilleren bare kan vente på at helsen blir helt frisk uten noen utfordring.

Audio og visuell tilbakemelding

Gi overbevisende lyd og visuell tilbakemelding når spilleren tar skade, gjenoppretter helsen eller beseirer fiender.

Effektiv opphavsrettsfrie lydeffekter, skjermrystelser, partikkeleffekter og visuelle signaler kan forbedre spillerens fordypning og få helse- og skadesystemet til å føles mer dynamisk og engasjerende.

Husk å vurdere den generelle balansen mellom tilleggsfunksjonene du introduserer. Fortsett å teste og samle tilbakemeldinger for å sikre at spillet forblir utfordrende, morsomt og godt tempo gjennom hele spillet.

Gjør Godot-spill mer engasjerende med helse- og skadesystem

Å integrere et helse- og skadesystem i ditt Godot-spill gir dybde og utfordring, noe som gjør spillingen mer engasjerende for spillere. Det introduserer et risiko-belønningselement, ettersom spillere må legge strategier og administrere helsen sin effektivt for å komme videre i spillet.

I tillegg gir den visuelle representasjonen av helselinjen spillere viktig tilbakemelding om deres nåværende tilstand, noe som forbedrer følelsen av fordypning.