Подобрете геймплея си в Godot, като включите система за здраве и щети.

Система за здраве и щети позволява на играчите да понасят щети и да губят точки за здраве, когато срещнат препятствия или врагове. Той също така им позволява да възстановят здравето си чрез различни средства, като например бонуси или здравни пакети.

Godot, популярен двигател за игри с отворен код, предоставя ясен и гъвкав подход за внедряване на такива системи. Можете лесно да създадете 2D игра с герой на играч, враг и лента за здраве, за да представите визуално здравето на играча.

Настройване на играта Godot

Първо, настройте основната структура на проекта в игровият двигател Godot и създайте необходимите възли.

Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.

Създайте нова сцена за героя на играча. Добави KinematicBody2D възел и вътре в него добавете a CollisionShape2D с правоъгълна форма, за да представлява хитбокса на играча. Прикачете a Спрайт възел към KinematicBody2D за показване на характера на играча.

instagram viewer
# Player.gd
extends KinematicBody2D

const SPEED = 200

var velocity = Vector2.ZERO
var health = 100

func _physics_process(delta):
velocity.x = 0
velocity.y = 0

if Input.is_action_pressed("ui_right"):
velocity.x += SPEED
elif Input.is_action_pressed("ui_left"):
velocity.x -= SPEED

if Input.is_action_pressed("ui_down"):
velocity.y += SPEED
elif Input.is_action_pressed("ui_up"):
velocity.y -= SPEED

move_and_collide(velocity * delta)

Сега имате основен играч във вашия проект Godot. Можете да местите играча с помощта на клавишите със стрелки, но все още няма въведена здравна система.

Проектиране на елементи на потребителския интерфейс на Health Bar

Сега можете да добавите елементи на потребителския интерфейс, за да представите визуално здравето на играча. Godot предоставя вграден контрол, наречен TextureProgress който работи добре за тази цел.

Създайте нов възел за HUD (heads-up дисплей). Добави CanvasLayer възел и вътре в него добавете a TextureProgress възел. Персонализирайте външния вид на TextureProgress възел според стила и темата на вашата игра.

За да покажете лентата на здравето с помощта на TextureProgress в HUD, трябва да му зададете текстура. TextureProgress използва две текстури: една за фон и друга за запълнената част (прогрес).

В панела на инспектора намерете Текстура раздел. Под Текстура, ще намерите свойства, наречени Под и Над. Щракнете върху Заредете бутон за всяко свойство и изберете съответните изображения.

Прикачете скрипт към HUD сцената, за да актуализирате лентата за здраве въз основа на здравето на играча:

# HUD.gd
extends CanvasLayer

onready var healthBar := $TextureProgress

func _ready():
update_health_bar()

func update_health_bar():
var hb = get_parent().get_node("KinematicBody2D")
healthBar.value = hb.health

Боравене със здравето на играча

За да намалите здравето на играча, когато премине границата на екрана, можете да добавите a условна проверка с помощта на оператор if. Ако играчът излезе извън екрана, можете да намалите здравето му. Ето как можете да постигнете това:

# player.gd
extends KinematicBody2D

const SPEED = 200
const DAMAGE_AMOUNT = 0.1

var velocity = Vector2.ZERO
var health = 100

# Screen boundaries
var screen_size
var margin = 20

func _ready():
screen_size = get_viewport_rect().size

func _physics_process(delta):
#... (existing movement code)
move_and_collide(velocity * delta)

var c1 = position.x < -margin
var c2 = position.x > screen_size.x + margin
var c3 = position.y < -margin
var c4 = position.y > screen_size.y + margin

# Check if the player is outside the screen boundaries
if c1 or c2 or c3 or c4:
take_damage_on_screen_exit()

func take_damage_on_screen_exit():
health -= DAMAGE_AMOUNT
if health <= 0:
health = 0
# Game over logic here

update_health_ui()

Добавете update_health_ui() функция в player.gd скрипт за извикване на HUD скрипта и актуализиране на лентата за здраве.

# Player.gd
extends KinematicBody2D

#... (other code)

func update_health_ui():
var hud = get_parent().get_node("HUD")
if hud:
hud.update_health_bar()

С тези промени играчът вече ще понася щети, когато пресече границата на екрана, а потребителският интерфейс на лентата за здраве ще се актуализира съответно.

Включително допълнителни функции

Системата за здраве и щети може да бъде разширена с различни допълнителни функции за подобряване на игровото изживяване. Някои идеи включват:

Здравни пикапи

Внедрете здравни пикапи, които позволяват на играча да възстанови здравето си, когато бъде събран. Пикапите за здраве могат да бъдат колекционерски предмети, разпръснати из света на играта, или награди за побеждаване на врагове.

Когато играчът взаимодейства с пикап за здраве, здравето му трябва да се увеличи с определена сума, до максимална стойност. Можете да използвате нов скрипт за елемента за вземане на здраве и да управлявате логиката за сблъсък и възстановяване на здравето.

Усилвания за непобедимост

Създавайте бонуси, които предоставят на играча временна непобедимост за ограничено време. Когато играчът събере сила за непобедимост, той става имунитет срещу щети от врагове или други опасности.

Внедрете таймер за проследяване на оставащата продължителност на състоянието на непобедимост и когато таймерът изтече, играчът се връща в своето уязвимо състояние.

Различни типове врагове

Проектирайте разнообразие от врагове с различни модели на атака, стойности на щетите и поведение. Всеки тип враг може да постави уникални предизвикателства за играча и да изисква различни стратегии за победа.

Например, някои врагове могат да се движат по-бързо, да нанасят повече щети или да имат специфични слаби точки, които играчът може да използва. Добавянето на разнообразие към сблъсъците с врага поддържа геймплея увлекателен и не му позволява да стане монотонен.

Регенерация на здравето

Приложете възстановяване на здравето с течение на времето, за да възнаградите играчите за избягване на щети. Когато играчът не понася щети за определен период от време, здравето му постепенно се регенерира до определен праг.

Въпреки това, уверете се, че скоростта на регенерация е балансирана, за да избегнете ситуации, в които играчът може просто да изчака здравето си да се възстанови напълно без никакви предизвикателства.

Аудио и визуална обратна връзка

Осигурете завладяваща аудио и визуална обратна връзка, когато играчът понесе щети, възстанови здравето си или победи врагове.

Въздействащ звукови ефекти без авторски права, трептения на екрана, ефекти на частици и визуални знаци могат да подобрят потапянето на играча и да направят системата за здраве и щети да се чувства по-динамична и ангажираща.

Не забравяйте да вземете предвид общия баланс на допълнителните функции, които въвеждате. Продължавайте да тествате играта и да събирате отзиви, за да сте сигурни, че играта остава предизвикателна, приятна и с добро темпо през цялата игра.

Правене на Godot Games по-ангажиращи със системата за здраве и щети

Интегрирането на система за здраве и щети във вашата игра Godot добавя дълбочина и предизвикателство, което прави играта по-ангажираща за играчите. Той въвежда елемент риск-възнаграждение, тъй като играчите трябва да изготвят стратегия и да управляват здравето си ефективно, за да напреднат в играта.

В допълнение, визуалното представяне на лентата на здравето предоставя на играчите важна обратна връзка за текущото им състояние, подобрявайки усещането им за потапяне.