Forbedre din spiloplevelse i Godot ved at inkorporere et sundheds- og skadesystem.
Et sundheds- og skadesystem gør det muligt for spillere at tage skade og miste sundhedspoint, når de støder på forhindringer eller fjender. Det gør dem også i stand til at genoprette sundheden ved hjælp af forskellige midler, såsom power-ups eller sundhedspakker.
Godot, en populær open source-spilmotor, giver en ligetil og fleksibel tilgang til implementering af sådanne systemer. Du kan nemt oprette et 2D-spil med en spillerkarakter, en fjende og en sundhedsbjælke til visuelt at repræsentere spillerens helbred.
Opsætning af Godot-spillet
Først skal du opsætte den grundlæggende projektstruktur i Godot spilmotoren og opret de nødvendige noder.
Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.
Opret en ny scene til spillerkarakteren. Tilføj en KinematicBody2D node, og inde i den skal du tilføje en CollisionShape2D med en rektangelform, der repræsenterer spillerens hitbox. Vedhæft en
Sprite node til KinematicBody2D for at vise spillerens karakter.# 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æggende spillerkarakter i dit Godot-projekt. Du kan flytte afspilleren ved hjælp af piletasterne, men der er endnu ikke noget sundhedssystem på plads.
Design af Health Bar UI-elementer
Nu kan du tilføje UI-elementer til visuelt at repræsentere spillerens helbred. Godot giver en indbygget kontrol kaldet TeksturProgress der fungerer godt til dette formål.
Opret en ny node til HUD (heads-up display). Tilføj en Lærredslag node, og inde i den skal du tilføje en TeksturProgress node. Tilpas udseendet af TeksturProgress node i henhold til dit spils stil og tema.
For at vise sundhedsbjælken ved hjælp af TeksturProgress i HUD'en skal du tildele en tekstur til den. TeksturProgress bruger to teksturer: en til baggrunden og en anden til den fyldte del (fremskridt).
I Inspektør-panelet skal du finde Struktur afsnit. Under Struktur, finder du ejendomme kaldet Under og Over. Klik på belastning knappen for hver egenskab og vælg de tilsvarende billeder.
Vedhæft et script til HUD-scenen for at opdatere sundhedsbjælken baseret på spillerens helbred:
# 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
Håndtering af spillerens sundhed
For at mindske spillerens helbred, når de krydser skærmgrænsen, kan du tilføje en betinget kontrol ved hjælp af en if-erklæring. Hvis spilleren går ud over skærmen, kan du mindske deres helbred. Sådan kan du opnå dette:
# 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()
Tilføj update_health_ui() funktion i player.gd script til at kalde HUD-scriptet og opdatere sundhedsbjælken.
# 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 ændringer vil afspilleren nu tage skade, når de krydser skærmgrænsen, og sundhedsbjælkens brugergrænseflade vil opdatere i overensstemmelse hermed.
Inklusiv yderligere funktioner
Sundheds- og skadessystemet kan udvides med forskellige ekstra funktioner for at forbedre spiloplevelsen. Nogle ideer omfatter:
Sundhed pickups
Implementer sundhed pickups, der giver spilleren mulighed for at genoprette deres helbred, når de indsamles. Sundheds pickupper kan være samleobjekter spredt over hele spilverdenen eller belønninger for at besejre fjender.
Når spilleren interagerer med en sundheds-pickup, bør deres helbred stige med en vis mængde, op til en maksimal værdi. Du kan bruge et nyt script til helbredsafhentningselementet og håndtere kollisions- og helbredsgendannelseslogikken.
Invincibility Power-Ups
Skab power-ups, der giver spilleren midlertidig uovervindelighed i en begrænset periode. Når spilleren samler en uovervindelig power-up, bliver de immune over for skader fra fjender eller andre farer.
Implementer en timer for at spore den resterende varighed af uovervindelighedstilstanden, og når timeren løber ud, vender spilleren tilbage til deres sårbare tilstand.
Forskellige fjendetyper
Design en række fjender med forskellige angrebsmønstre, skadesværdier og adfærd. Hver fjendetype kan udgøre unikke udfordringer for spilleren og kræve forskellige strategier for at besejre.
For eksempel kan nogle fjender bevæge sig hurtigere, give mere skade eller have specifikke svage punkter, som spilleren kan udnytte. Tilføjelse af forskellighed til fjendens møder holder gameplayet engagerende og forhindrer det i at blive monotont.
Sundhedsregenerering
Implementer helbredsregenerering over tid for at belønne spillere for at undgå skader. Når spilleren ikke tager skade i en bestemt varighed, regenereres deres helbred gradvist til en vis tærskel.
Sørg dog for, at regenereringshastigheden er afbalanceret for at undgå situationer, hvor spilleren blot kan vente på, at deres helbred kommer sig helt uden nogen udfordring.
Audio og visuel feedback
Giv overbevisende lyd- og visuel feedback, når afspilleren tager skade, genopretter helbred eller besejrer fjender.
Effektiv ophavsretsfri lydeffekter, skærmrystelser, partikeleffekter og visuelle signaler kan forbedre spillerens fordybelse og få sundheds- og skadesystemet til at føles mere dynamisk og engagerende.
Husk at overveje den overordnede balance mellem de ekstra funktioner, du introducerer. Fortsæt med at teste og indsamle feedback for at sikre, at gameplayet forbliver udfordrende, underholdende og i godt tempo gennem hele spillet.
Gør Godot-spil mere engagerende i sundheds- og skadesystemet
At integrere et sundheds- og skadesystem i dit Godot-spil tilføjer dybde og udfordring, hvilket gør gameplayet mere engagerende for spillerne. Det introducerer et risiko-belønningselement, da spillere skal planlægge og styre deres helbred effektivt for at komme videre i spillet.
Derudover giver den visuelle repræsentation af sundhedsbjælken spillere vigtig feedback om deres nuværende tilstand, hvilket forbedrer deres følelse af fordybelse.