Verbessern Sie Ihr Spielerlebnis in Godot, indem Sie ein Gesundheits- und Schadenssystem integrieren.

Ein Gesundheits- und Schadenssystem ermöglicht es Spielern, Schaden zu erleiden und Gesundheitspunkte zu verlieren, wenn sie auf Hindernisse oder Feinde stoßen. Es ermöglicht ihnen auch, die Gesundheit durch verschiedene Mittel wie Power-Ups oder Gesundheitspakete wiederherzustellen.

Godot, eine beliebte Open-Source-Spiele-Engine, bietet einen unkomplizierten und flexiblen Ansatz zur Implementierung solcher Systeme. Sie können ganz einfach ein 2D-Spiel mit einem Spielercharakter, einem Feind und einer Gesundheitsleiste erstellen, um die Gesundheit des Spielers visuell darzustellen.

Einrichten des Godot-Spiels

Richten Sie zunächst die grundlegende Projektstruktur ein die Godot-Spiel-Engine und erstellen Sie die erforderlichen Knoten.

Der in diesem Artikel verwendete Code ist hier verfügbar GitHub-Repository Die Nutzung steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.

Erstelle eine neue Szene für den Spielercharakter. Füge hinzu ein

instagram viewer
KinematicBody2D Knoten, und fügen Sie darin a hinzu CollisionShape2D mit einer rechteckigen Form, um die Hitbox des Spielers darzustellen. Befestigen ein Sprite Knoten zum KinematicBody2D um den Charakter des Spielers anzuzeigen.

# 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)

Jetzt haben Sie einen einfachen Spielercharakter in Ihrem Godot-Projekt. Sie können den Spieler mit den Pfeiltasten bewegen, aber es gibt noch kein Gesundheitssystem.

Entwerfen von UI-Elementen für die Gesundheitsleiste

Jetzt können Sie UI-Elemente hinzufügen, um die Gesundheit des Spielers visuell darzustellen. Godot bietet eine integrierte Steuerung namens TextureProgress das funktioniert für diesen Zweck gut.

Erstellen Sie einen neuen Knoten für das HUD (Heads-up-Display). Füge hinzu ein CanvasLayer Knoten, und fügen Sie darin a hinzu TextureProgress Knoten. Passen Sie das Erscheinungsbild des an TextureProgress Knoten entsprechend dem Stil und Thema Ihres Spiels.

Zur Anzeige der Gesundheitsleiste mit TextureProgress Im HUD müssen Sie ihm eine Textur zuweisen. TextureProgress verwendet zwei Texturen: eine für den Hintergrund und eine für den gefüllten Teil (Fortschritt).

Suchen Sie im Inspektorfenster nach Textur Abschnitt. Unter Textur, Sie finden Eigenschaften namens Unter Und Über. Drücke den Belastung Klicken Sie für jede Eigenschaft auf die Schaltfläche und wählen Sie die entsprechenden Bilder aus.

Hängen Sie ein Skript an die HUD-Szene an, um die Gesundheitsleiste basierend auf der Gesundheit des Spielers zu aktualisieren:

# 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

Umgang mit der Spielergesundheit

Um die Gesundheit des Spielers zu verringern, wenn er den Bildschirmrand überschreitet, können Sie Folgendes hinzufügen: Bedingungsprüfung mit einer if-Anweisung. Wenn der Spieler den Bildschirm verlässt, können Sie seine Gesundheit verringern. So können Sie dies erreichen:

# 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()

Ergänzen Sie die update_health_ui() Funktion in der player.gd Skript, um das HUD-Skript aufzurufen und die Gesundheitsleiste zu aktualisieren.

# Player.gd
extends KinematicBody2D

#... (other code)

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

Mit diesen Änderungen erleidet der Spieler nun Schaden, wenn er den Bildschirmrand überschreitet, und die Benutzeroberfläche der Gesundheitsleiste wird entsprechend aktualisiert.

Inklusive zusätzlicher Funktionen

Das Gesundheits- und Schadenssystem kann mit verschiedenen Zusatzfunktionen erweitert werden, um das Spielerlebnis zu verbessern. Einige Ideen sind:

Gesundheits-Pickups

Implementieren Sie Gesundheits-Pickups, die es dem Spieler ermöglichen, beim Sammeln seine Gesundheit wiederherzustellen. Gesundheits-Pickups können über die Spielwelt verteilte Sammelgegenstände oder Belohnungen für das Besiegen von Feinden sein.

Wenn der Spieler mit einem Gesundheits-Pickup interagiert, sollte sich seine Gesundheit um einen bestimmten Betrag bis zu einem Maximalwert erhöhen. Sie können ein neues Skript für das Gesundheitsabholungselement verwenden und die Kollisions- und Gesundheitswiederherstellungslogik verwalten.

Unbesiegbarkeits-Power-Ups

Erstellen Sie Power-Ups, die dem Spieler für begrenzte Zeit vorübergehende Unbesiegbarkeit verleihen. Wenn der Spieler ein Unbesiegbarkeits-Power-Up erhält, wird er immun gegen Schaden durch Feinde oder andere Gefahren.

Implementieren Sie einen Timer, um die verbleibende Dauer des Unbesiegbarkeitszustands zu verfolgen. Wenn der Timer abgelaufen ist, kehrt der Spieler in seinen verwundbaren Zustand zurück.

Verschiedene Feindtypen

Entwerfen Sie eine Vielzahl von Feinden mit unterschiedlichen Angriffsmustern, Schadenswerten und Verhaltensweisen. Jeder Feindtyp kann den Spieler vor einzigartige Herausforderungen stellen und erfordert unterschiedliche Strategien, um ihn zu besiegen.

Beispielsweise können sich einige Feinde schneller bewegen, mehr Schaden anrichten oder bestimmte Schwachstellen aufweisen, die der Spieler ausnutzen kann. Durch das Hinzufügen von Abwechslung zu Gegnerbegegnungen bleibt das Gameplay spannend und wird verhindert, dass es eintönig wird.

Heilung

Implementieren Sie im Laufe der Zeit eine Gesundheitsregeneration, um Spieler dafür zu belohnen, dass sie Schaden vermeiden. Wenn der Spieler über einen bestimmten Zeitraum hinweg keinen Schaden erleidet, regeneriert sich seine Gesundheit allmählich bis zu einem bestimmten Schwellenwert.

Stellen Sie jedoch sicher, dass die Regenerationsrate ausgewogen ist, um Situationen zu vermeiden, in denen der Spieler ohne Herausforderung einfach darauf warten kann, bis sich seine Gesundheit vollständig erholt hat.

Audio- und visuelles Feedback

Bieten Sie überzeugendes akustisches und visuelles Feedback, wenn der Spieler Schaden erleidet, seine Gesundheit wiederherstellt oder Feinde besiegt.

Wirkungsvoll Urheberrechtsfreie SoundeffekteBildschirmverwacklungen, Partikeleffekte und visuelle Hinweise können die Immersion des Spielers verbessern und dafür sorgen, dass sich das Gesundheits- und Schadenssystem dynamischer und ansprechender anfühlt.

Denken Sie daran, die Gesamtbalance der von Ihnen eingeführten zusätzlichen Funktionen zu berücksichtigen. Testen Sie weiterhin Spiele und sammeln Sie Feedback, um sicherzustellen, dass das Gameplay während des gesamten Spiels herausfordernd, unterhaltsam und temporeich bleibt.

Godot-Spiele stärker in das Gesundheits- und Schadenssystem einbinden

Die Integration eines Gesundheits- und Schadenssystems in Ihr Godot-Spiel verleiht Tiefe und Herausforderung und macht das Gameplay für die Spieler ansprechender. Es führt ein Risiko-Ertrags-Element ein, da die Spieler Strategien entwickeln und ihre Gesundheit effektiv verwalten müssen, um im Spiel voranzukommen.

Darüber hinaus gibt die visuelle Darstellung der Gesundheitsleiste den Spielern wichtige Rückmeldungen zu ihrem aktuellen Zustand und verstärkt so ihr Gefühl der Immersion.