Daugelis žaidimų turi tam tikrą priešą, su kuriuo reikia kovoti. Ištirkite įvairius būdus, kuriais galite pridėti ir patobulinti kovą su priešu.

Priešai vaidina lemiamą vaidmenį, kad žaidimai būtų įdomūs ir sudėtingi žaidėjams. Nesvarbu, ar kuriate 2D platformingą, šaudyklę iš viršaus į apačią ar vaidmenų žaidimą, pridėję priešų galite žymiai pagerinti žaidimo patirtį.

Patogi Godot sąsaja ir intuityvi scenarijų kalba GDScript daro procesą efektyvų ir malonų.

„Godot“ žaidimo nustatymas

Prieš pasinerdami į priešo kūrimą, nustatykite pagrindinę 2D žaidimo struktūrą Godot žaidimo variklis.

Sukurkite naują 2D projektą „Godot“. Pagrindinėje scenoje sukurkite naują „KinematicBody2D“. mazgas ir pavadinkite jį Žaidėjas. Grotuvo mazgo viduje pridėkite a CollisionShape2D stačiakampio formos, kuri bus žaidėjo hitbox. Taip pat pridėkite a Sprite mazgas kaip vaizdinis žaidėjo personažo atvaizdas.

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

instagram viewer

Pridėkite šį GDScript kodą prie Žaidėjas mazgas pagrindiniam judėjimui įjungti:

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)

Naudodamas šį kodą, žaidėjas gali judėti kairėn, dešinėn, aukštyn ir žemyn, naudodamas rodyklių arba WASD klavišus.

Paprasto priešo kūrimas

Dabar, kai esate sukūrę žaidėjo personažą, galite sukurti paprastą priešą.

Sukurkite naują sceną ir pridėkite a StaticBody2D mazgas pavadintas Priešas. Priešo mazgo viduje pridėkite a CollisionShape2D mazgas su apskritimo forma, apibrėžiantis priešo pataikymo dėžutę. Taip pat pridėkite a Sprite mazgas vizualiai vaizduoti priešą.

Nustačius susidūrimą, priešas bus pasirengęs bendrauti su žaidėju ir kitais jūsų žaidimo pasaulio elementais.

Sukurti priešą sekti žaidėją

Priešų, kurie seka žaidėją, kūrimas suteikia žaidimui naujo iššūkio lygio.

Sukurkite naują sceną tokiam priešo tipui ir pridėkite a „KinematicBody2D“. mazgas pavadintas Sekite Priešą su CollisionShape2D. Pridėkite šį GDScript kodą prie FollowEnemy mazgo, kad jis sektų grotuvą:

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)

Dabar, Sekite Priešą pajudės link žaidėjo pozicijos kiekviename kadre.

Priešo kulkų pridėjimas

Dabar galite priversti priešą šaudyti kulkomis į žaidėją. Sukurkite naują sceną ir pavadinkite ją Bullet.tscn. Pridėti „KinematicBody2D“. mazgas į įvykio vietą. Pritvirtinkite Bullet.gd scenarijus į KinematicBody2D mazgą Bullet.tscn scenoje. Pridėkite šį kodą, kad apibrėžtumėte Bullet klasę:

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

Dabar sukurkite naują mazgą priešui su kulkomis ir pavadinkite jį Šaudymas Priešas. „ShootingEnemy“ mazgo viduje pridėkite a CollisionShape2D mazgas su stačiakampio forma kaip hitbox.

Pridėkite šį GDScript kodą prie ShootingEnemy mazgo, kad jis šaudytų kulkas:

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)

Dabar priešas periodiškai šaudys kulkomis link žaidėjo pozicijos. Naudokite sąlyginį jeigu pareiškimas norėdami patikrinti, ar šaudymo laikmatis yra mažesnis nei 0. Jei taip, tada šaudykite į kulką.

Atsitiktinai judantis priešas

Be priešų, kurie seka žaidėją arba šaudo į jį, atsitiktinai judantis priešas gali įnešti į jūsų žaidimą nenuspėjamumo ir iššūkio. Norint sukurti priešą atsitiktiniais judėjimo modeliais, reikia derinti paprastą logiką ir atsitiktinių skaičių generavimą.

Pradėkite kurdami naują sceną ir pridėkite a „KinematicBody2D“. mazgas pavadintas Atsitiktinis Priešas. Sukurkite naują scenarijų pavadinimu RandomEnemy.gd ir pritvirtinkite prie RandomEnemy mazgo. Scenarijus tvarkys atsitiktinio judėjimo logiką.

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)

Įskaitant papildomas funkcijas

Yra daug papildomų funkcijų, kurias galite pridėti prie savo priešų, kad žaidimas būtų įdomesnis.

Bosų mūšiai

Boso mūšiai yra kulminaciniai žaidimo momentai, suteikiantys įsimintinų ir sudėtingų susitikimų, kurie išbando žaidėjų įgūdžius ir atkaklumą. Boso priešai paprastai yra didesni ir galingesni nei įprasti priešai, todėl žaidėjai turi naudoti tam tikras strategijas ir taktiką, kad juos nugalėtų.

Dinaminis priešo nerštas

Įdiekite dinamišką neršto sistemą, kuri koreguoja susidūrimus su priešu pagal žaidėjo pasirodymą, vietą ar žaidimo įvykius. Taip sukuriama labiau reaguojanti ir individualizuota žaidimo patirtis.

Aplinkos prisitaikymas

Sukurkite priešus, kurie gali prisitaikyti prie aplinkos, pavyzdžiui, priešus, kurie gali skristi, plaukti ar lipti sienomis. Šis universalumas atveria naujas žaidimo galimybes ir iššaukia žaidėjus naršyti įvairiose vietovėse.

Priešo silpnybės ir pasipriešinimas

Priskirkite priešams konkrečias silpnybes ir pasipriešinimą, skatindami žaidėjus eksperimentuoti su skirtingais metodais ir taktika. Kai kurie priešai gali būti pažeidžiami tam tikrų atakų ar elementų, o kiti yra atsparūs arba atsparūs.

Priešo pritaikymas ir elgesio variantai

Pridėkite nenuspėjamumo lygį, suteikdami priešams atsitiktinių elgesio variantų. Pavyzdžiui, priešas gali turėti skirtingus puolimo modelius arba judėjimo greitį skirtingose ​​​​žaidimose, todėl žaidimas išlieka šviežias ir gali būti atkuriamas.

Įtraukus daugybę šių papildomų funkcijų, galite praturtinti jūsų žaidimo priešo dizainą, todėl kiekvienas susitikimas žaidėjams bus unikalus ir įsimintinas.

Atminkite, kad nors naujos mechanikos pristatymas gali būti įdomus, labai svarbu išlaikyti pusiausvyrą ir nuoseklumą bendrame žaidimo dizaine.

Geriausia priešų kūrimo praktika

Kurdami priešus „Godot“ žaidime, atsižvelkite į šiuos geriausios praktikos pavyzdžius:

Aiški vaizdinė komunikacija

Naudokite skirtingus priešo dizainus, kurie išsiskiria iš aplinkos, kad priešai būtų lengvai atpažįstami.

Apsvarstykite galimybę naudoti spalvų kodavimą arba unikalius siluetus, kad atskirtumėte priešų tipus. Įsitikinkite, kad priešo animacija ir vaizdiniai efektai sustiprina jų elgesį ir atakas.

Subalansavimo sunkumai

Palaipsniui pristatykite vis sudėtingesnius priešus žaidėjui progresuojant žaidimui. Išbandykite priešo susidūrimus su įvairaus lygio žaidėjais, kad įsitikintumėte, jog iššūkiai tinka visiems žaidėjams. Venkite staigių sunkumų, kurie gali nuvilti žaidėjus.

Vengti pigių kadrų

Sukurkite priešus su atakomis, kurių žaidėjas gali išvengti arba blokuoti, suteikdamas jiems galimybę reaguoti. Naudokite sąžiningą priešų atakų dėžutę ir venkite atakų, kurios nepatenka į jų vizualinį vaizdą. Naudokite įspėjamuosius ženklus ar užuominas apie pavojingus išpuolius.

Žaidimų testavimas ir iteracija

Reguliariai tikrinkite susidūrimus su priešu kūrimo metu, kad įvertintumėte jų linksmumą ir sunkumus. Surinkite žaidėjų atsiliepimus ir naudokite juos, kad patikslintumėte priešo elgesį, stipriąsias ir silpnąsias puses.

Garso efektai

Garso efektai vaidina lemiamą vaidmenį kuriant įtraukią ir patrauklią žaidimo aplinką. Kai priešas pataiko, pridėkite atitinkamą Garso efektai be autorių teisių sustiprinti smūgio ir įsitraukimo į kovą jausmą.

Jūsų žaidimas gali lydėti kiekvieną smūgį ar smūgį su skirtingais garso signalais, atitinkančiais atakos tipą ir priešo savybes.

Kad „Godot“ žaidimai sudomintų priešus

Priešai yra pagrindinė daugelio žaidimų sudedamoji dalis, suteikianti iššūkių, kliūčių ir pasiekimo jausmą, kai jie nugalėti. Pridėję skirtingų tipų priešų su skirtingu elgesiu, sveikatos taškų ir šaudymo mechanika, galite sukurti įvairią ir patrauklią žaidėjų žaidimo patirtį.

Nepamirškite subalansuoti sunkumų, siūlyti vaizdinį ir garsinį grįžtamąjį ryšį ir nuodugniai išbandyti savo priešus, kad žaidėjai galėtų mėgautis maloniu ir naudingu žaidimu.