Multe jocuri includ un fel de inamic cu care să te lupți. Explorează diferitele moduri în care poți adăuga – și rafina – lupta inamicului.

Inamicii joacă un rol crucial în a face jocurile interesante și provocatoare pentru jucători. Indiferent dacă creați un joc de platformă 2D, un shooter de sus în jos sau un joc de rol, adăugarea de inamici poate îmbunătăți semnificativ experiența de joc.

Interfața prietenoasă a lui Godot și limbajul de scripting intuitiv, GDScript, fac procesul eficient și plăcut.

Configurarea jocului Godot

Înainte de a vă scufunda în crearea inamicului, configurați structura de bază a jocului dvs. 2D în motorul de joc Godot.

Creați un nou proiect 2D în Godot. În scena principală, creați un nou KinematicBody2D nod și denumește-l Jucător. În interiorul nodului jucător, adăugați a CollisionShape2D cu formă dreptunghiulară, care va fi hitbox-ul jucătorului. De asemenea, adăugați a Sprite nod ca reprezentare vizuală a personajului jucătorului.

Codul folosit în acest articol este disponibil în acest articol

instagram viewer
Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Atașați următorul cod GDScript la Jucător nod pentru a permite mișcarea de bază:

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)

Cu acest cod, jucătorul se poate deplasa la stânga, la dreapta, în sus și în jos folosind tastele săgeți sau tastele WASD.

Crearea unui inamic simplu

Acum că ai configurat un personaj jucător, poți crea un inamic simplu.

Creați o scenă nouă și adăugați un StaticBody2D nodul numit Dusman. În interiorul nodului Inamic, adăugați a CollisionShape2D nod cu formă de cerc pentru a defini hitbox-ul inamicului. De asemenea, adăugați a Sprite nod pentru a reprezenta vizual inamicul.

Odată cu configurarea coliziunii, inamicul va fi gata să interacționeze cu jucătorul și cu alte elemente din lumea ta de joc.

A face ca un inamic să urmeze jucătorul

Crearea de inamici care urmează jucătorul adaugă un nou nivel de provocare jocului.

Creați o scenă nouă pentru următorul tip de inamic și adăugați a KinematicBody2D nodul numit Urmăriți pe dușman cu un CollisionShape2D. Atașați următorul cod GDScript la nodul FollowEnemy pentru a-l face să urmeze jucătorul:

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)

Acum Urmăriți pe dușman se va deplasa spre poziția jucătorului în fiecare cadru.

Adăugarea gloanțelor inamice

Acum, poți face ca inamicul să tragă gloanțe către jucător. Creați o scenă nouă și denumiți-o Bullet.tscn. Adauga o KinematicBody2D nod la scenă. Atașați Bullet.gd script pentru nodul KinematicBody2D din scena Bullet.tscn. Adăugați următorul cod pentru a defini clasa Bullet:

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

Acum, creează un nou nod pentru inamic cu gloanțe și numește-l Shooting Enemy. În nodul ShootingEnemy, adăugați a CollisionShape2D nod cu formă dreptunghiulară ca hitbox.

Atașați următorul cod GDScript la nodul ShootingEnemy pentru a-l face să tragă gloanțe:

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)

Acum, inamicul va trage periodic gloanțe spre poziția jucătorului. Folosește un condițional dacă afirmație pentru a verifica dacă shoot_timer este mai mică de 0. Dacă este, atunci trage glonțul.

Inamic în mișcare aleatorie

Pe lângă inamicii care îl urmăresc sau împușcă în jucător, un inamic care se mișcă la întâmplare poate injecta un element de imprevizibilitate și provocare în jocul tău. Crearea unui inamic cu modele de mișcare aleatoare necesită o combinație de logică simplă și generare de numere aleatorii.

Începeți prin a crea o scenă nouă și adăugați un KinematicBody2D nodul numit RandomEnemy. Creați un nou script numit RandomEnemy.gd și atașați-l la nodul RandomEnemy. Scriptul se va ocupa de logica mișcării aleatoare.

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)

Inclusiv caracteristici suplimentare

Există multe funcții suplimentare pe care le poți adăuga inamicilor tăi pentru a face jocul mai interesant.

Bătălii cu șefi

Luptele cu șefii servesc ca momente culminante în jocul tău, oferind întâlniri memorabile și provocatoare care testează abilitățile și perseverența jucătorilor. Inamicii șefii sunt de obicei mai mari și mai puternici decât inamicii obișnuiți, ceea ce impune jucătorilor să folosească strategii și tactici specifice pentru a-i învinge.

Apariția dinamică a inamicului

Implementați un sistem de generare dinamică care ajustează întâlnirile inamicului în funcție de performanța jucătorului, locație sau evenimentele din joc. Acest lucru creează o experiență de joc mai receptivă și personalizată.

Adaptarea mediului

Creați inamici care se pot adapta mediului, cum ar fi inamici care pot zbura, înota sau escalada pe pereți. Această versatilitate deschide noi posibilități de joc și provoacă jucătorii să navigheze pe diferite terenuri.

Slăbiciunile și rezistențele inamicului

Atribuiți slăbiciuni și rezistențe specifice inamicilor, încurajând jucătorii să experimenteze cu diferite abordări și tactici. Unii inamici pot fi vulnerabili la anumite atacuri sau elemente, în timp ce alții sunt imuni sau rezistenți.

Personalizarea inamicului și variațiile de comportament

Adaugă un nivel de imprevizibilitate oferindu-le inamicilor variații aleatorii de comportament. De exemplu, un inamic poate avea diferite modele de atac sau viteze de mișcare în diferite jocuri, păstrând jocul proaspăt și rejucat.

Includerea unei varietăți de aceste caracteristici suplimentare poate îmbogăți designul inamicului jocului tău, făcând fiecare întâlnire unică și memorabilă pentru jucători.

Amintiți-vă că, deși introducerea de noi mecanici poate fi interesantă, este esențial să mențineți echilibrul și coerența în designul general al jocului dvs.

Cele mai bune practici pentru crearea de inamici

Când creați inamici în jocul Godot, luați în considerare următoarele bune practici:

Comunicare vizuală clară

Folosiți modele distincte ale inamicului care ies în evidență față de mediu pentru a face inamicii ușor de recunoscut.

Luați în considerare utilizarea codurilor de culori sau siluete unice pentru a diferenția tipurile de inamici. Asigurați-vă că animațiile și efectele vizuale ale inamicului le întăresc comportamentele și atacurile.

Dificultatea de echilibrare

Introduceți treptat inamici cu o complexitate crescândă pe măsură ce jucătorul progresează prin joc. Testează întâlnirile inamice cu jucători de diferite niveluri de calificare pentru a te asigura că provocările sunt potrivite pentru toți jucătorii. Evitați vârfurile bruște de dificultate care pot frustra jucătorii.

Evitarea loviturilor ieftine

Proiectează inamicii cu atacuri pe care jucătorul le poate eschiva sau bloca, oferindu-le șansa de a reacționa. Folosiți un hitbox corect pentru atacurile inamicilor, evitând atacurile care lovesc dincolo de reprezentarea lor vizuală. Folosiți semne de avertizare sau indicii pentru a sugera atacuri periculoase.

Testare de redare și iterație

Testați în mod regulat întâlnirile inamice în timpul dezvoltării pentru a evalua factorul de distracție și dificultatea acestora. Adunați feedback de la jucători și folosiți-l pentru a ajusta comportamentele, punctele forte și punctele slabe ale inamicului.

Efecte sonore

Efectele sonore joacă un rol crucial în crearea unui mediu de joc captivant și captivant. Când un inamic primește o lovitură, adaugă corespunzătoare efecte sonore fără drepturi de autor pentru a consolida sentimentul de impact și angajare în luptă.

Jocul tău poate însoți fiecare lovitură sau lovitură cu semnale audio distincte care corespund tipului de atac și caracteristicilor inamicului.

Faceți ca jocurile Godot să fie mai implicate cu inamicii

Dușmanii sunt o componentă fundamentală a multor jocuri, oferind provocări, obstacole și un sentiment de realizare atunci când sunt învinși. Adăugând diferite tipuri de inamici cu diferite comportamente, puncte de sănătate și mecanisme de tragere, puteți crea experiențe de joc diverse și captivante pentru jucători.

Nu uitați să echilibrați dificultatea, să oferiți feedback vizual și auditiv și să vă testați temeinic inamicii pentru a oferi jucătorilor o experiență de joc plăcută și plină de satisfacții.