Vylepšete svůj herní zážitek ve hře Godot začleněním systému zdraví a poškození.
Systém zdraví a poškození umožňuje hráčům poškozovat a ztrácet body zdraví, když narazí na překážky nebo nepřátele. Umožňuje jim také obnovit zdraví různými prostředky, jako jsou vylepšení nebo balíčky zdraví.
Godot, populární open-source herní engine, poskytuje přímý a flexibilní přístup k implementaci takových systémů. Můžete snadno vytvořit 2D hru s postavou hráče, nepřítelem a ukazatelem zdraví, který bude vizuálně reprezentovat zdraví hráče.
Nastavení hry Godot
Nejprve nastavte základní strukturu projektu v herní engine Godot a vytvořte potřebné uzly.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Vytvořte novou scénu pro postavu hráče. Přidat KinematicBody2D uzel a do něj přidejte a CollisionShape2D s obdélníkovým tvarem představujícím hráčský hitbox. Připojit a Skřítek uzel k KinematicBody2D pro zobrazení postavy hráče.
# 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)
Nyní máte ve svém projektu Godot základní hráčskou postavu. S hráčem můžete pohybovat pomocí šipek, ale zatím není zaveden žádný zdravotní systém.
Navrhování prvků uživatelského rozhraní panelu zdraví
Nyní můžete přidat prvky uživatelského rozhraní, které vizuálně reprezentují zdraví hráče. Godot poskytuje vestavěný ovládací prvek tzv TextureProgress který pro tento účel funguje dobře.
Vytvořte nový uzel pro HUD (heads-up display). Přidat CanvasLayer uzel a do něj přidejte a TextureProgress uzel. Přizpůsobte vzhled TextureProgress uzel podle stylu a tématu vaší hry.
Chcete-li zobrazit panel zdraví pomocí TextureProgress v HUD, je potřeba mu přiřadit texturu. TextureProgress používá dvě textury: jednu pro pozadí a druhou pro vyplněnou část (progress).
Na panelu Inspektor vyhledejte soubor Textura sekce. Pod Textura, najdete vlastnosti tzv Pod a Přes. Klikněte na Zatížení pro každou vlastnost a vyberte odpovídající obrázky.
Připojte skript ke scéně HUD a aktualizujte ukazatel zdraví na základě zdraví hráče:
# 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
Zacházení se zdravím hráče
Chcete-li snížit zdraví hráče, když překročí hranici obrazovky, můžete přidat a podmíněná kontrola pomocí příkazu if. Pokud hráč překročí obrazovku, můžete snížit jeho zdraví. Můžete toho dosáhnout takto:
# 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()
Přidat update_health_ui() funkce v player.gd skript pro volání skriptu HUD a aktualizaci ukazatele stavu.
# Player.gd
extends KinematicBody2D#... (other code)
func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()
Díky těmto změnám nyní hráč utrpí poškození, když překročí hranici obrazovky, a uživatelské rozhraní ukazatele zdraví se odpovídajícím způsobem aktualizuje.
Včetně dalších funkcí
Systém zdraví a poškození lze rozšířit o různé doplňkové funkce pro vylepšení herního zážitku. Některé nápady zahrnují:
Zdravotní odběry
Implementujte sbírání zdraví, které hráči po sebrání umožní obnovit své zdraví. Snímky zdraví mohou být sběratelské předměty roztroušené po celém herním světě nebo odměny za poražení nepřátel.
Když hráč interaguje s vyzvednutím zdraví, jeho zdraví by se mělo zvýšit o určitou částku, až do maximální hodnoty. Pro položku vyzvednutí zdraví můžete použít nový skript a zpracovat logiku kolizí a obnovení zdraví.
Neporazitelnost Power-Ups
Vytvářejte vylepšení, která umožňují hráči dočasnou neporazitelnost na omezenou dobu. Když hráč shromáždí vylepšení neporazitelnosti, stane se imunní vůči poškození od nepřátel nebo jiných nebezpečí.
Implementujte časovač ke sledování zbývajícího trvání stavu nepřemožitelnosti, a když časovač vyprší, hráč se vrátí do svého zranitelného stavu.
Různé typy nepřátel
Navrhněte různé nepřátele s různými vzory útoků, hodnotami poškození a chováním. Každý typ nepřítele může pro hráče představovat jedinečné výzvy a vyžaduje různé strategie k poražení.
Někteří nepřátelé se například mohou pohybovat rychleji, způsobovat větší poškození nebo mít specifická slabá místa, která může hráč využít. Přidání rozmanitosti do nepřátelských střetnutí udržuje hru poutavou a zabraňuje tomu, aby se stala monotónní.
Regenerace zdraví
Implementujte regeneraci zdraví v průběhu času, abyste odměňovali hráče za vyhnutí se poškození. Když hráč neutrpí zranění po určitou dobu, jeho zdraví se postupně regeneruje na určitou hranici.
Ujistěte se však, že míra regenerace je vyvážená, abyste se vyhnuli situacím, kdy hráč může jednoduše čekat, až se jeho zdraví plně zotaví, bez jakýchkoliv problémů.
Zvuková a vizuální zpětná vazba
Poskytněte přesvědčivou zvukovou a vizuální zpětnou vazbu, když hráč utrpí poškození, obnoví zdraví nebo porazí nepřátele.
Působivé zvukové efekty bez autorských práv, chvění obrazovky, částicové efekty a vizuální podněty mohou zlepšit ponoření hráče a učinit systém zdraví a poškození dynamičtější a poutavější.
Nezapomeňte zvážit celkovou rovnováhu doplňkových funkcí, které zavádíte. Pokračujte v testování hry a shromažďování zpětné vazby, abyste zajistili, že hra zůstane po celou dobu hry náročná, zábavná a v dobrém tempu.
Díky systému zdraví a poškození budou hry Godot poutavější
Integrace systému zdraví a poškození do vaší hry Godot dodává hloubku a výzvu, díky čemuž je hra pro hráče poutavější. Zavádí prvek rizika a odměny, protože hráči potřebují strategicky a efektivně řídit své zdraví, aby mohli postupovat ve hře.
Vizuální znázornění ukazatele zdraví navíc poskytuje hráčům důležitou zpětnou vazbu o jejich aktuálním stavu a zvyšuje jejich pocit ponoření.