Многе игре укључују неку врсту непријатеља са којим се треба борити. Истражите различите начине на које можете додати – и финоћу – борби против непријатеља.
Непријатељи играју кључну улогу у томе да игре буду узбудљиве и изазовне за играче. Било да креирате 2Д платформер, пуцач одозго надоле или игру играња улога, додавање непријатеља може значајно побољшати искуство играња.
Годотов интерфејс прилагођен кориснику и интуитивни језик за скриптовање, ГДСцрипт, чине процес ефикасним и пријатним.
Подешавање игре Годо
Пре него што уђете у стварање непријатеља, поставите основну структуру своје 2Д игре мотор игре Годот.
Креирајте нови 2Д пројекат у Годоту. У главној сцени направите нову КинематицБоди2Д чвор и именовати га Плаиер. Унутар чвора плејера додајте а ЦоллисионСхапе2Д са обликом правоугаоника, који ће бити хитбокс играча. Такође додајте а Сприте чвор као визуелни приказ карактера играча.
Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.
Приложите следећи ГДСцрипт код на Плаиер чвор да омогући основно кретање:
extends KinematicBody2D
const SPEED = 200
func _physics_process(delta):
var motion = Vector2.ZEROif Input.is_action_pressed("ui_right"):
motion.x += SPEEDif Input.is_action_pressed("ui_left"):
motion.x -= SPEEDif Input.is_action_pressed("ui_down"):
motion.y += SPEEDif Input.is_action_pressed("ui_up"):
motion.y -= SPEED
motion = move_and_slide(motion)
Са овим кодом, играч може да се креће лево, десно, горе и доле користећи тастере са стрелицама или ВАСД тастере.
Стварање једноставног непријатеља
Сада када имате подешен лик играча, можете створити једноставног непријатеља.
Направите нову сцену и додајте а СтатицБоди2Д именован чвор Непријатељ. Унутар непријатељског чвора додајте а ЦоллисионСхапе2Д чвор са кружним обликом за дефинисање непријатељског хитбокса. Такође додајте а Сприте чвор за визуелно представљање непријатеља.
Када је судар постављен, непријатељ ће бити спреман за интеракцију са играчем и другим елементима у вашем свету игре.
Натерати непријатеља да прати играча
Стварање непријатеља који прате играча додаје нови ниво изазова игри.
Направите нову сцену за следећи тип непријатеља и додајте а КинематицБоди2Д именован чвор ФолловЕнеми са ЦоллисионСхапе2Д. Прикачите следећи ГДСцрипт код на ФолловЕнеми чвор да би пратио играча:
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)
Сада ФолловЕнеми ће се кретати према позицији играча у сваком кадру.
Додавање непријатељских метака
Сада можете натерати непријатеља да гађа метке према играчу. Направите нову сцену и дајте јој назив Буллет.тсцн. Додајте а КинематицБоди2Д чвор до сцене. Причврстите Буллет.гд скрипта за КинематицБоди2Д чвор у Буллет.тсцн сцени. Додајте следећи код да дефинишете класу Буллет:
extends KinematicBody2D
const BULLET_SPEED = 300
var bullet_direction = Vector2.ZEROfunc _physics_process(delta):
var motion = bullet_direction * BULLET_SPEED * delta
move_and_collide(motion)
func set_direction(direction):
bullet_direction = direction.normalized()
Сада направите нови чвор за непријатеља са мецима и дајте му име СхоотингЕнеми. Унутар СхоотингЕнеми чвора додајте а ЦоллисионСхапе2Д чвор са обликом правоугаоника као хитбокс.
Прикачите следећи ГДСцрипт код на СхоотингЕнеми чвор да бисте га натерали да испаљује метке:
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)
Непријатељ ће сада повремено гађати метке према позицији играча. Користите условни ако изјава да провери да ли је схоот_тимер је мање од 0. Ако јесте, онда пуцајте метак.
Непријатељ који се насумично креће
Поред непријатеља који прате или пуцају на играча, непријатељ који се насумично креће може да унесе елемент непредвидљивости и изазова у вашу игру. Стварање непријатеља са насумичним обрасцима кретања захтева комбинацију једноставне логике и генерисања случајних бројева.
Почните креирањем нове сцене и додајте а КинематицБоди2Д именован чвор РандомЕнеми. Креирајте нову скрипту под називом РандомЕнеми.гд и прикључите га на чвор РандомЕнеми. Скрипта ће управљати логиком случајног покрета.
extends KinematicBody2D
const MOVE_SPEED = 100
const MOVE_INTERVAL_MIN = 1.0
const MOVE_INTERVAL_MAX = 3.0var move_timer = 0.0
var move_interval = 0.0
var move_direction = Vector2.ZEROfunc _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 -= deltaif move_timer <= 0.0:
choose_new_direction()
var motion = move_direction * MOVE_SPEED * delta
move_and_collide(motion)
Укључујући додатне функције
Постоји много додатних функција које можете додати својим непријатељима да би играње учинило занимљивијим.
Босс Баттлес
Битке са шефовима служе као кључни моменти у вашој игри, пружајући незаборавне и изазовне сусрете који тестирају вештине и истрајност играча. Непријатељи шефова су обично већи и моћнији од обичних непријатеља, што од играча захтева да користе специфичне стратегије и тактике да би их победили.
Динамичко стварање непријатеља
Имплементирајте динамички систем за стварање који прилагођава непријатељске сусрете на основу перформанси играча, локације или догађаја у игри. Ово ствара брже и персонализованије искуство играња.
Адаптација на животну средину
Створите непријатеље који се могу прилагодити окружењу, као што су непријатељи који могу да лете, пливају или се пењу на зидове. Ова свестраност отвара нове могућности играња и изазива играче да се крећу различитим теренима.
Непријатељске слабости и отпори
Доделите специфичне слабости и отпоре непријатељима, подстичући играче да експериментишу са различитим приступима и тактикама. Неки непријатељи могу бити рањиви на одређене нападе или елементе, док су други имуни или отпорни.
Прилагођавање непријатеља и варијације понашања
Додајте ниво непредвидљивости дајући непријатељима насумичне варијације понашања. На пример, непријатељ може имати различите обрасце напада или брзине кретања у различитим играма, одржавајући игру свежом и која се може поново играти.
Укључивање разних ових додатних функција може обогатити непријатељски дизајн ваше игре, чинећи сваки сусрет јединственим и незаборавним за играче.
Запамтите да, иако увођење нове механике може бити узбудљиво, кључно је одржати равнотежу и кохерентност у оквиру целокупног дизајна ваше игре.
Најбоље праксе за стварање непријатеља
Када стварате непријатеље у игри Годот, узмите у обзир следеће најбоље праксе:
Јасна визуелна комуникација
Користите различите дизајне непријатеља који се издвајају из окружења како бисте непријатеље лако препознали.
Размислите о коришћењу кодирања боја или јединствених силуета да бисте разликовали типове непријатеља. Уверите се да непријатељске анимације и визуелни ефекти појачавају њихово понашање и нападе.
Потешкоће са балансирањем
Постепено уводите непријатеље све сложеније како играч напредује кроз игру. Тестирајте непријатељске сусрете са играчима различитих нивоа вештина како бисте били сигурни да су изазови прикладни за све играче. Избегавајте изненадне скокове тежине који могу да фрустрирају играче.
Избегавање јефтиних снимака
Дизајнирајте непријатеље са нападима које играч може да избегне или блокира, дајући им прилику да реагују. Користите фер хитбок за нападе непријатеља, избегавајући нападе који погађају изван њиховог визуелног приказа. Користите знакове упозорења или знакове да наговестите опасне нападе.
Плаитестинг и итерација
Редовно тестирајте непријатељске сусрете током развоја да бисте проценили њихов забавни фактор и тежину. Прикупите повратне информације од играча и користите их за фино подешавање непријатељског понашања, предности и слабости.
Звучни ефекти
Звучни ефекти играју кључну улогу у стварању импресивног и задивљујућег окружења за игру. Када непријатељ добије ударац, додајте одговарајуће звучни ефекти без ауторских права да би се појачао осећај удара и ангажовања у борби.
Ваша игра може да прати сваки ударац или ударац различитим звучним сигналима који одговарају врсти напада и карактеристикама непријатеља.
Учините Годот игре више ангажованим са непријатељима
Непријатељи су основна компонента многих игара, пружајући изазове, препреке и осећај постигнућа када су поражени. Додавањем различитих типова непријатеља са различитим понашањем, здравственим поенима и механиком пуцања, можете створити разнолика и занимљива искуства играња за играче.
Не заборавите да уравнотежите тежину, понудите визуелне и звучне повратне информације и темељно тестирате своје непријатеље како бисте играчима пружили пријатно и корисно искуство играња.