Mnoge igre uključuju neku vrstu neprijatelja s kojima se možete boriti. Istražite razne načine na koje možete dodati — i finoću — borbi protiv neprijatelja.

Neprijatelji igraju ključnu ulogu u tome da igre budu uzbudljive i izazovne za igrače. Bilo da stvarate 2D platformer, top-down shooter ili igranje uloga, dodavanje neprijatelja može značajno poboljšati iskustvo igranja.

Godotovo sučelje prilagođeno korisniku i intuitivni skriptni jezik, GDScript, čine proces učinkovitim i ugodnim.

Postavljanje igre Godot

Prije nego što zaronite u stvaranje neprijatelja, postavite osnovnu strukturu svoje 2D igre Godot game engine.

Napravite novi 2D projekt u Godotu. U glavnoj sceni stvorite novu KinematicBody2D čvor i nazovite ga Igrač. Unutar čvora igrača dodajte a CollisionShape2D pravokutnog oblika, koji će biti igračev hitbox. Također dodajte a Sprite čvor kao vizualni prikaz lika igrača.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Priložite sljedeći GDScript kod Igrač čvor za omogućavanje osnovnog kretanja:

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)

Pomoću ovog koda igrač se može pomicati lijevo, desno, gore i dolje pomoću tipki sa strelicama ili WASD tipki.

Stvaranje jednostavnog neprijatelja

Sada kada ste postavili lik igrača, možete stvoriti jednostavnog neprijatelja.

Napravite novu scenu i dodajte a StaticBody2D čvor imenovan Neprijatelj. Unutar neprijateljskog čvora dodajte a CollisionShape2D čvor u obliku kruga za definiranje neprijateljskog hitbox-a. Također dodajte a Sprite čvor za vizualno predstavljanje neprijatelja.

S postavljenim sudarima, neprijatelj će biti spreman za interakciju s igračem i drugim elementima u vašem svijetu igre.

Natjerati neprijatelja da slijedi igrača

Stvaranje neprijatelja koji prate igrača dodaje novu razinu izazova igri.

Napravite novu scenu za sljedeću vrstu neprijatelja i dodajte a KinematicBody2D čvor imenovan PratiNeprijatelja s CollisionShape2D. Priložite sljedeći GDScript kod čvoru FollowEnemy kako bi slijedio igrača:

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)

Sada, PratiNeprijatelja pomicat će se prema poziciji igrača u svakom okviru.

Dodavanje neprijateljskih metaka

Sada možete natjerati neprijatelja da ispaljuje metke prema igraču. Napravite novu scenu i dajte joj naziv Metak.tscn. Dodati KinematicBody2D čvor na scenu. Priložite Metak.gd skriptu u KinematicBody2D čvor u Bullet.tscn sceni. Dodajte sljedeći kod za definiranje klase 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()

Sada stvorite novi čvor za neprijatelja s mecima i dajte mu ime Pucanje na neprijatelja. Unutar čvora ShootingEnemy dodajte a CollisionShape2D čvor s pravokutnim oblikom kao hitbox.

Priložite sljedeći GDScript kod čvoru ShootingEnemy kako bi ispaljivao metke:

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)

Neprijatelj će sada povremeno ispaljivati ​​metke prema poziciji igrača. Koristite uvjet ako izjava provjeriti je li pucati_timer je manji od 0. Ako jest, ispali metak.

Neprijatelj koji se nasumično kreće

Osim neprijatelja koji slijede ili pucaju na igrača, neprijatelj koji se nasumično kreće može unijeti element nepredvidljivosti i izazova u vašu igru. Stvaranje neprijatelja s nasumičnim obrascima kretanja zahtijeva kombinaciju jednostavne logike i generiranja nasumičnog broja.

Započnite stvaranjem nove scene i dodajte a KinematicBody2D čvor imenovan RandomEnemy. Stvorite novu skriptu pod nazivom RandomEnemy.gd i pričvrstite ga na čvor RandomEnemy. Skripta će obraditi logiku nasumičnog kretanja.

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)

Uključujući dodatne značajke

Postoje mnoge dodatne značajke koje možete dodati svojim neprijateljima kako bi igrica bila zanimljivija.

Bitke šefova

Borbe s šefovima služe kao vrhunac vaše igre, pružajući nezaboravne i izazovne susrete koji testiraju vještine i upornost igrača. Neprijatelji šefovi obično su veći i moćniji od običnih neprijatelja, što zahtijeva od igrača primjenu posebnih strategija i taktika kako bi ih porazili.

Dinamičko stvaranje neprijatelja

Implementirajte dinamički sustav stvaranja koji prilagođava neprijateljske susrete na temelju igračeve izvedbe, lokacije ili događaja u igri. To stvara osjetljivije i personalizirano iskustvo igranja.

Prilagodba okolišu

Stvorite neprijatelje koji se mogu prilagoditi okolini, poput neprijatelja koji mogu letjeti, plivati ​​ili se penjati po zidovima. Ova svestranost otvara nove mogućnosti igranja i izaziva igrače da se kreću različitim terenima.

Neprijateljske slabosti i otpori

Dodijelite specifične slabosti i otpore neprijateljima, potičući igrače da eksperimentiraju s različitim pristupima i taktikama. Neki neprijatelji mogu biti ranjivi na određene napade ili elemente, dok su drugi imuni ili otporni.

Prilagodba neprijatelja i varijacije ponašanja

Dodajte razinu nepredvidivosti dajući neprijateljima nasumične varijacije ponašanja. Na primjer, neprijatelj može imati različite obrasce napada ili brzine kretanja u različitim igrama, održavajući igru ​​svježom i mogućom za ponovno igranje.

Uključivanje niza ovih dodatnih značajki može obogatiti dizajn neprijatelja vaše igre, čineći svaki susret jedinstvenim i nezaboravnim za igrače.

Upamtite da iako uvođenje novih mehanika može biti uzbudljivo, ključno je održavati ravnotežu i koherentnost unutar cjelokupnog dizajna vaše igre.

Najbolje prakse za stvaranje neprijatelja

Kada stvarate neprijatelje u igrici Godot, razmotrite sljedeće najbolje prakse:

Jasna vizualna komunikacija

Koristite različite dizajne neprijatelja koji se ističu od okoline kako bi neprijatelji bili lako prepoznatljivi.

Razmislite o korištenju kodiranja boja ili jedinstvenih silueta za razlikovanje vrsta neprijatelja. Pobrinite se da neprijateljske animacije i vizualni efekti ojačaju njihovo ponašanje i napade.

Poteškoće u balansiranju

Postupno uvodite sve složenije neprijatelje kako igrač napreduje kroz igru. Testirajte neprijateljske susrete s igračima različitih razina vještina kako biste bili sigurni da su izazovi prikladni za sve igrače. Izbjegavajte iznenadne skokove težine koji mogu frustrirati igrače.

Izbjegavanje jeftinih snimaka

Dizajnirajte neprijatelje s napadima koje igrač može izbjeći ili blokirati, dajući im priliku da reagiraju. Za napade neprijatelja koristite pošten okvir za pogotke, izbjegavajući napade koji pogađaju izvan svoje vizualne reprezentacije. Koristite znakove upozorenja ili znakove da nagovijestite opasne napade.

Testiranje i ponavljanje

Redovito testirajte neprijateljske susrete tijekom razvoja kako biste procijenili njihovu zabavu i težinu. Prikupite povratne informacije od igrača i upotrijebite ih za fino podešavanje neprijateljskih ponašanja, prednosti i slabosti.

Zvučni efekti

Zvučni efekti igraju ključnu ulogu u stvaranju impresivnog i zadivljujućeg okruženja igre. Kada neprijatelj primi udarac, dodajte odgovarajuće zvučni efekti bez autorskih prava ojačati osjećaj utjecaja i angažmana u borbi.

Vaša igra može popratiti svaki udarac ili udarac različitim zvučnim znakovima koji odgovaraju vrsti napada i karakteristikama neprijatelja.

Kako igre Godot privući više neprijatelja

Neprijatelji su temeljna komponenta mnogih igara, pružaju izazove, prepreke i osjećaj postignuća kada su poraženi. Dodavanjem različitih vrsta neprijatelja s različitim ponašanjem, zdravstvenim bodovima i mehanikom pucanja, možete stvoriti raznolika i privlačna iskustva igranja za igrače.

Ne zaboravite uravnotežiti težinu, ponuditi vizualnu i zvučnu povratnu informaciju i temeljito testirati svoje neprijatelje kako biste igračima pružili ugodno i nagrađujuće iskustvo igranja.