Sok játék tartalmaz valamilyen ellenséget, amellyel harcolni kell. Fedezze fel az ellenséges harc hozzáadásának és finomításának különféle módjait.

Az ellenségek döntő szerepet játszanak abban, hogy a játékokat izgalmassá és kihívást jelentővé tegyék a játékosok számára. Legyen szó 2D platformerről, felülről lefelé irányuló lövöldözős játékról vagy szerepjátékról, az ellenség hozzáadása jelentősen javíthatja a játékélményt.

A Godot felhasználóbarát felülete és intuitív szkriptnyelve, a GDScript teszi a folyamatot hatékonnyá és élvezetessé.

A Godot játék beállítása

Mielőtt belemerülne az ellenségteremtésbe, állítsa be 2D-s játékának alapstruktúráját a Godot játékmotor.

Hozzon létre egy új 2D-s projektet a Godot-ban. A fő jelenetben hozzon létre egy újat KinematicBody2D csomópontot, és nevezd el Játékos. A lejátszó csomóponton belül adja hozzá a CollisionShape2D téglalap alakú, ami a játékos hitboxa lesz. Adjon hozzá a Kobold csomópont a játékos karakterének vizuális megjelenítése.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

instagram viewer

Csatolja a következő GDScript kódot a Játékos csomópont az alapvető mozgás engedélyezéséhez:

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)

Ezzel a kóddal a játékos balra, jobbra, fel és le mozoghat a nyílbillentyűkkel vagy a WASD billentyűkkel.

Egyszerű ellenség létrehozása

Most, hogy beállított egy játékos karaktert, létrehozhat egy egyszerű ellenséget.

Hozzon létre egy új jelenetet, és adjon hozzá a StaticBody2D nevű csomópont Ellenség. Az Enemy csomóponton belül adjon hozzá egy CollisionShape2D kör alakú csomópont az ellenség találati dobozának meghatározásához. Adjon hozzá a Kobold csomópont az ellenség vizuális megjelenítésére.

Az ütközés beállítása után az ellenség készen áll arra, hogy interakcióba lépjen a játékossal és a játékvilág más elemeivel.

Ellenség létrehozása Kövesd a játékost

A játékost követő ellenségek létrehozása új kihívást jelent a játékban.

Hozzon létre egy új jelenetet a következő ellenségtípushoz, és adja hozzá a KinematicBody2D nevű csomópont Kövesd az Ellenséget egy CollisionShape2D-vel. Csatolja a következő GDScript kódot a FollowEnemy csomóponthoz, hogy az kövesse a lejátszót:

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)

Most a Kövesd az Ellenséget minden keretben a játékos pozíciója felé mozog.

Ellenséges golyók hozzáadása

Most rákényszerítheted az ellenséget, hogy golyókat lőjön a játékos felé. Hozzon létre egy új jelenetet, és nevezze el Bullet.tscn. Add hozzá a KinematicBody2D csomópont a helyszínre. Csatolja a Bullet.gd szkriptet a KinematicBody2D csomóponthoz a Bullet.tscn jelenetben. Adja hozzá a következő kódot a Bullet osztály meghatározásához:

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

Most hozzon létre egy új csomópontot az ellenségnek a golyókkal, és nevezze el Lövés Ellenség. A ShootingEnemy csomóponton belül adjon hozzá egy CollisionShape2D téglalap alakú csomópont, mint a találati doboz.

Csatolja a következő GDScript kódot a ShootingEnemy csomóponthoz, hogy golyókat lőhessen:

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)

Az ellenség most időnként golyókat fog lövöldözni a játékos pozíciója felé. Használj feltételes módot ha nyilatkozat ellenőrizni, hogy a shoot_timer kisebb, mint 0. Ha igen, akkor lődd le a golyót.

Véletlenszerűen mozgó ellenség

A játékost követő vagy rálőő ellenségeken kívül egy véletlenszerűen mozgó ellenség is kiszámíthatatlanságot és kihívást adhat a játékodba. Az ellenség véletlenszerű mozgásmintákkal történő létrehozásához egyszerű logika és véletlenszám-generálás kombinációja szükséges.

Kezdje egy új jelenet létrehozásával, és adjon hozzá a KinematicBody2D nevű csomópont RandomEnemy. Hozzon létre egy új szkriptet, melynek neve RandomEnemy.gd és csatolja a RandomEnemy csomóponthoz. A szkript kezeli a véletlenszerű mozgás logikáját.

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)

Kiegészítő funkciókkal együtt

Számos további funkciót is hozzáadhatsz ellenségeidhez, hogy érdekesebbé tegye a játékmenetet.

Boss Battles

A főnökcsaták csúcspontként szolgálnak a játékban, emlékezetes és kihívásokkal teli találkozókat biztosítva, amelyek próbára teszik a játékosok képességeit és kitartását. A főnök ellenségei általában nagyobbak és erősebbek, mint a hagyományos ellenségek, ezért a játékosoknak meghatározott stratégiákat és taktikákat kell alkalmazniuk a legyőzésükhöz.

Dynamic Enemy Spawning

Valósíts meg egy dinamikus spawning rendszert, amely a játékos teljesítménye, helye vagy játékon belüli eseményei alapján igazítja az ellenséges találkozásokat. Ez érzékenyebb és személyre szabottabb játékélményt biztosít.

Környezeti alkalmazkodás

Hozzon létre olyan ellenségeket, amelyek képesek alkalmazkodni a környezethez, például olyan ellenségeket, amelyek képesek repülni, úszni vagy falra mászni. Ez a sokoldalúság új játéklehetőségeket nyit meg, és kihívást jelent a játékosoknak a különböző terepeken való navigálásra.

Az ellenség gyengeségei és ellenállásai

Rendelj konkrét gyengeségeket és ellenállásokat az ellenségekhez, ösztönözve a játékosokat, hogy kísérletezzenek különböző megközelítésekkel és taktikákkal. Egyes ellenségek érzékenyek lehetnek bizonyos támadásokra vagy elemekre, míg mások immunisak vagy ellenállóak.

Az ellenség testreszabása és viselkedési változatai

Adjon hozzá egy szintet a kiszámíthatatlansághoz azzal, hogy véletlenszerű viselkedési variációkat ad ellenségei számára. Például egy ellenség különböző támadási mintákkal vagy mozgási sebességgel rendelkezhet a különböző játékmenetekben, így a játékmenet friss és újrajátszható marad.

Ezen kiegészítő funkciók széles választékával gazdagíthatja játéka ellenséges megjelenését, így minden találkozás egyedivé és emlékezetessé válik a játékosok számára.

Ne feledje, hogy bár az új mechanikák bevezetése izgalmas lehet, kulcsfontosságú az egyensúly és a koherencia fenntartása a játék általános kialakításában.

Bevált gyakorlatok ellenségek létrehozásához

Amikor ellenségeket hoz létre a Godot játékban, vegye figyelembe a következő bevált gyakorlatokat:

Világos vizuális kommunikáció

Használjon különböző ellenséges mintákat, amelyek kiemelkednek a környezetből, hogy az ellenségeket könnyen felismerjék.

Fontolja meg színkódolás vagy egyedi sziluettek használatát az ellenségtípusok megkülönböztetésére. Győződjön meg arról, hogy az ellenséges animációk és vizuális effektusok erősítik viselkedésüket és támadásaikat.

Kiegyensúlyozási nehézség

Fokozatosan mutasd be az ellenséget egyre bonyolultabbá, ahogy a játékos előrehalad a játékban. Teszteld az ellenséges találkozásokat különböző képzettségi szintű játékosokkal, hogy a kihívások minden játékos számára megfelelőek legyenek. Kerülje el a hirtelen nehézségi ugrásokat, amelyek frusztrálhatják a játékosokat.

Olcsó lövések elkerülése

Tervezz ellenségeket olyan támadásokkal, amelyeket a játékos kikerülhet vagy blokkolhat, így lehetőséget adva nekik a reagálásra. Használjon tisztességes találati dobozt az ellenség támadásaihoz, elkerülve az olyan támadásokat, amelyek túlmutatnak a vizuális megjelenítésükön. Használjon figyelmeztető jeleket vagy jelzéseket, hogy utaljon veszélyes támadásokra.

Játéktesztelés és iteráció

Rendszeresen tesztelje az ellenséges találkozásokat a fejlesztés során, hogy értékelje szórakoztató tényezőjüket és nehézségeiket. Gyűjtsön visszajelzéseket a játékosoktól, és használja azt az ellenség viselkedésének, erősségeinek és gyengeségeinek finomhangolására.

Hang hatások

A hangeffektusok döntő szerepet játszanak a magával ragadó és magával ragadó játékkörnyezet kialakításában. Amikor egy ellenség eltalál, add hozzá a megfelelőt szerzői jog mentes hangeffektusok a becsapódás és a harcban való részvétel érzésének megerősítése.

A játékod minden ütést vagy ütést külön hangjelzésekkel kísérhet, amelyek megfelelnek a támadás típusának és az ellenség jellemzőinek.

A Godot-játékok vonzóbbá tétele az ellenségekkel

Az ellenségek sok játék alapvető összetevői, kihívásokat, akadályokat és sikerélményt jelentenek, ha legyőzik őket. Különböző típusú ellenségek hozzáadásával, eltérő viselkedéssel, életpontokkal és lövéstechnikával, változatos és lebilincselő játékélményt teremthetsz a játékosok számára.

Ne felejtse el egyensúlyozni a nehézségeket, adjon vizuális és hallható visszajelzést, és alaposan tesztelje ellenségeit, hogy élvezetes és kifizetődő játékélményben legyen része a játékosoknak.