Mnoho her obsahuje nějaký druh nepřítele, se kterým lze bojovat. Prozkoumejte různé způsoby, jak můžete přidat – a zdokonalit – boj s nepřáteli.

Nepřátelé hrají klíčovou roli při vytváření vzrušujících a náročných her pro hráče. Ať už vytváříte 2D plošinovku, střílečku shora dolů nebo hru na hrdiny, přidání nepřátel může výrazně zlepšit herní zážitek.

Uživatelsky přívětivé rozhraní Godot a intuitivní skriptovací jazyk GDScript činí proces efektivním a příjemným.

Nastavení hry Godot

Než se ponoříte do tvorby nepřátel, nastavte základní strukturu své 2D hry herní engine Godot.

Vytvořte nový 2D projekt v Godot. V hlavní scéně vytvořte novou KinematicBody2D uzel a pojmenujte jej Hráč. Uvnitř uzlu přehrávače přidejte a CollisionShape2D s tvarem obdélníku, který bude hráčským hitboxem. Přidejte také a Skřítek uzel jako vizuální reprezentace postavy hráče.

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.

Připojte následující kód GDScript k Hráč uzel umožňující základní pohyb:

instagram viewer
extends KinematicBody2D

const SPEED = 200

func _physics_process(delta):
var motion = Vector2.ZERO

if Input.is_action_pressed("ui_right"):
motion.x += SPEED

if Input.is_action_pressed("ui_left"):
motion.x -= SPEED

if Input.is_action_pressed("ui_down"):
motion.y += SPEED

if Input.is_action_pressed("ui_up"):
motion.y -= SPEED

motion = move_and_slide(motion)

S tímto kódem se hráč může pohybovat doleva, doprava, nahoru a dolů pomocí kláves se šipkami nebo kláves WASD.

Vytvoření jednoduchého nepřítele

Nyní, když máte nastavenou hráčskou postavu, můžete si vytvořit jednoduchého nepřítele.

Vytvořte novou scénu a přidejte a StaticBody2D uzel pojmenovaný Nepřítel. Uvnitř uzlu Enemy přidejte a CollisionShape2D uzel s kruhovým tvarem, který definuje hitbox nepřítele. Přidejte také a Skřítek uzel, který bude nepřítele vizuálně reprezentovat.

Po nastavení kolize bude nepřítel připraven k interakci s hráčem a dalšími prvky ve vašem herním světě.

Vytvoření nepřítele Následujte hráče

Vytváření nepřátel, kteří hráče následují, přidává do hry novou úroveň výzvy.

Vytvořte novou scénu pro následující typ nepřítele a přidejte a KinematicBody2D uzel pojmenovaný Následuj nepřítele s CollisionShape2D. Připojte následující kód GDScript k uzlu FollowEnemy, aby následoval přehrávač:

extends KinematicBody2D

const SPEED = 100

func _physics_process(delta):
var player = get_parent().get_node("Player")
var player_position = player.global_position
var enemy_position = global_position
var direction = player_position - enemy_position
direction = direction.normalized()

var motion = direction * SPEED * delta
move_and_collide(motion)

Nyní, Následuj nepřítele se v každém snímku posune směrem k pozici hráče.

Přidání nepřátelských kulek

Nyní můžete nepřítele přimět střílet kulky směrem k hráči. Vytvořte novou scénu a pojmenujte ji Bullet.tscn. Přidat KinematicBody2D uzel na scénu. Připojte Bullet.gd skript do uzlu KinematicBody2D ve scéně Bullet.tscn. Chcete-li definovat třídu Bullet, přidejte následující kód:

extends KinematicBody2D

const BULLET_SPEED = 300
var bullet_direction = Vector2.ZERO

func _physics_process(delta):
var motion = bullet_direction * BULLET_SPEED * delta
move_and_collide(motion)

func set_direction(direction):
bullet_direction = direction.normalized()

Nyní vytvořte nový uzel pro nepřítele s odrážkami a pojmenujte jej Střelba nepřítele. Uvnitř uzlu ShootingEnemy přidejte a CollisionShape2D uzel s obdélníkovým tvarem jako hitbox.

Připojte následující kód GDScript k uzlu ShootingEnemy, aby mohl střílet kulky:

extends KinematicBody2D

const SPEED = 100
const SHOOT_DELAY = 1.5
var shoot_timer = SHOOT_DELAY

# Import the Bullet scene
const BulletScene = preload("res://Bullet.tscn")

func _physics_process(delta):

# Shooting logic
shoot_timer -= delta

if shoot_timer <= 0:
shoot_timer = SHOOT_DELAY
var bullet_instance = BulletScene.instance()
bullet_instance.global_position = global_position
bullet_instance.set_direction(direction)
get_parent().add_child(bullet_instance)

Nepřítel nyní bude pravidelně střílet kulky směrem k pozici hráče. Použijte podmínku -li prohlášení zkontrolovat, zda časovač_střílení je menší než 0. Pokud ano, vystřelte kulku.

Náhodně se pohybující nepřítel

Kromě nepřátel, kteří hráče sledují nebo na něj střílejí, může do vaší hry vnést prvek nepředvídatelnosti a výzvy i náhodně se pohybující nepřítel. Vytvoření nepřítele pomocí náhodných pohybových vzorců vyžaduje kombinaci jednoduché logiky a generování náhodných čísel.

Začněte vytvořením nové scény a přidejte a KinematicBody2D uzel pojmenovaný RandomEnemy. Vytvořte nový skript s názvem RandomEnemy.gd a připojte jej k uzlu RandomEnemy. Skript bude pracovat s logikou náhodného pohybu.

extends KinematicBody2D

const MOVE_SPEED = 100
const MOVE_INTERVAL_MIN = 1.0
const MOVE_INTERVAL_MAX = 3.0

var move_timer = 0.0
var move_interval = 0.0
var move_direction = Vector2.ZERO

func _ready():
choose_new_direction()

func choose_new_direction():
move_interval = rand_range(MOVE_INTERVAL_MIN, MOVE_INTERVAL_MAX)
move_timer = move_interval
move_direction = Vector2(randf(), randf()).normalized()

func _physics_process(delta):
move_timer -= delta

if move_timer <= 0.0:
choose_new_direction()

var motion = move_direction * MOVE_SPEED * delta
move_and_collide(motion)

Včetně dalších funkcí

Existuje mnoho dalších funkcí, které můžete přidat svým nepřátelům, aby byla hra zajímavější.

Boss Battles

Bitvy s bossy slouží jako vrcholné okamžiky ve vaší hře a poskytují nezapomenutelná a náročná střetnutí, která otestují dovednosti a vytrvalost hráčů. Boss nepřátelé jsou obvykle větší a silnější než běžní nepřátelé, což vyžaduje, aby hráči používali specifické strategie a taktiky, aby je porazili.

Dynamické tření nepřátel

Implementujte systém dynamického spawnování, který upravuje střetnutí s nepřáteli na základě hráčova výkonu, umístění nebo událostí ve hře. To vytváří citlivější a personalizovanější herní zážitek.

Přizpůsobení prostředí

Vytvářejte nepřátele, kteří se dokážou přizpůsobit prostředí, například nepřátele, kteří mohou létat, plavat nebo lézt po zdech. Tato všestrannost otevírá nové herní možnosti a vyzývá hráče, aby procházeli různými terény.

Nepřátelské slabiny a odpory

Přidělte nepřátelům konkrétní slabiny a odolnost a povzbuzujte hráče, aby experimentovali s různými přístupy a taktikami. Někteří nepřátelé mohou být zranitelní vůči určitým útokům nebo elementům, zatímco jiní jsou imunní nebo odolní.

Přizpůsobení nepřátel a variace chování

Přidejte úroveň nepředvídatelnosti tím, že nepřátelům poskytnete náhodné varianty chování. Nepřítel může mít například různé vzory útoků nebo rychlost pohybu v různých průchodech, takže hra zůstává svěží a znovu hratelná.

Zahrnutí řady těchto dodatečných funkcí může obohatit nepřátelský design vaší hry, díky čemuž bude každé setkání jedinečné a pro hráče nezapomenutelné.

Pamatujte, že i když může být zavádění nových mechanik vzrušující, je důležité zachovat rovnováhu a soudržnost v celkovém designu vaší hry.

Nejlepší postupy pro vytváření nepřátel

Při vytváření nepřátel ve hře Godot zvažte následující osvědčené postupy:

Jasná vizuální komunikace

Používejte zřetelné vzory nepřátel, které vyčnívají z prostředí, aby byli nepřátelé snadno rozpoznatelní.

Zvažte použití barevného kódování nebo jedinečných siluet k rozlišení typů nepřátel. Ujistěte se, že nepřátelské animace a vizuální efekty posilují jejich chování a útoky.

Obtížnost vyvažování

Postupně představujte nepřátele se zvyšující se složitostí, jak hráč postupuje hrou. Otestujte střetnutí s nepřáteli s hráči různých úrovní dovedností, abyste se ujistili, že výzvy jsou vhodné pro všechny hráče. Vyhněte se náhlým výkyvům obtížnosti, které mohou hráče frustrovat.

Vyhýbejte se levným výstřelům

Navrhněte nepřátele pomocí útoků, kterým se hráč může vyhýbat nebo je blokovat, a dát jim tak šanci reagovat. Pro útoky nepřátel používejte férový hitbox a vyhněte se útokům, které zasahují mimo jejich vizuální reprezentaci. Používejte varovné signály nebo narážky, abyste naznačili nebezpečné útoky.

Playtesting a iterace

Během vývoje pravidelně testujte střetnutí s nepřáteli, abyste vyhodnotili jejich zábavný faktor a obtížnost. Získejte zpětnou vazbu od hráčů a použijte ji k vyladění nepřátelského chování, silných a slabých stránek.

Zvukové efekty

Zvukové efekty hrají zásadní roli při vytváření pohlcujícího a podmanivého herního prostředí. Když nepřítel dostane zásah, přidejte odpovídající zvukové efekty bez autorských práv k posílení pocitu dopadu a zapojení do boje.

Vaše hra může doprovázet každý úder nebo zásah odlišnými zvukovými signály, které odpovídají typu útoku a vlastnostem nepřítele.

Zajistěte, aby hry Godot byly poutavější s nepřáteli

Nepřátelé jsou základní součástí mnoha her, poskytují výzvy, překážky a pocit úspěchu, když jsou poraženi. Přidáním různých typů nepřátel s různým chováním, body zdraví a mechanismy střelby můžete pro hráče vytvořit rozmanité a poutavé herní zážitky.

Nezapomeňte vyvážit obtížnost, nabídnout vizuální a sluchovou zpětnou vazbu a důkladně otestovat své nepřátele, abyste hráčům poskytli příjemný a obohacující herní zážitek.