Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Стан Люті
Пояснення класу RageState
Клас RageState
є специфічним станом, який обробляє поведінку ворога, коли він входить у режим люті. Цей клас наслідує від класу State
і включає методи для початку, оновлення та завершення стану люті. Він також включає дії для додавання здоров'я та зміни шкоди атаки, коли ворог у режимі люті.
Визначення класу та змінні-члени
Визначення класу;
public class RageState : State
Цей клас наслідує від класу State
, що означає, що він повинен реалізувати абстрактні методи, визначені в State
.
Змінні-члени:
Animator animator;
Контролює анімації.System.Action addHealth;
Дія для додавання здоров'я ворогу.System.Action changingAttackDmg;
Дія для зміни шкоди атаки ворога.
Конструктор
Конструктор ініціалізує RageState
з необхідними компонентами: Animator
для анімацій та двома діями для додавання здоров'я та зміни шкоди атаки. Він встановлює ці значення у відповідні змінні-члени.
Метод StartState
Цей метод встановлює isStateFinished
у false
, запускає анімацію люті, встановлюючи булевий параметр "rage" в аніматорі на true
, і викликає changingAttackDmg
для збільшення шкоди ворога.
Метод UpdateState
Цей метод викликається кожного кадру і викликає addHealth
, щоб постійно додавати здоров'я ворогу, поки він знаходиться в стані люті.
Метод EndState
Цей метод зупиняє анімацію люті, встановлюючи булевий параметр "rage" в аніматорі на false
.
Чому ми зробили це так
Покращена поведінка ворога;
RageState
покращує поведінку ворога, збільшуючи його шкоду від атаки та постійно додаючи здоров'я, що робить його більш складним для гравця;
Використання дій (System.Action
) дозволяє гнучко та модульно змінювати атрибути ворога.
Динамічний та захоплюючий ігровий процес:
Коли ворог входить у стан люті, ігровий процес стає більш динамічним та захоплюючим, оскільки гравець повинен адаптуватися до більш потужного та стійкого ворога.
Як це працює в контексті
Вхід у стан люті: Коли ворог входить у RageState
, викликається метод StartState
, що запускає анімацію люті та збільшує шкоду від атаки ворога.
Під час люті: Метод UpdateState
викликається кожного кадру. Він постійно додає здоров'я ворогу, що ускладнює гравцю перемогу над ворогом.
Вихід зі стану люті: Коли ворог виходить з RageState
, викликається метод EndState
, що зупиняє анімацію люті.
Структуруючи RageState
таким чином, ми забезпечуємо, що ворог може стати значно потужнішим та стійкішим, надаючи гравцю більший виклик та покращуючи загальний ігровий досвід.
Ініціалізація стану люті
Пояснення
Ініціалізація RageState:
rage = new RageState(animator, (...) => {...}, (...) => {...});
Створює новий екземпляр RageState
з назвою rage
;
Аніматор:
animator
: Передає аніматор для керування анімаціями;
Збільшення здоров'я:
() => { health += 10f * Time.deltaTime; }
Лямбда-функція, яка збільшує здоров'я на 10
одиниць за секунду;
Зміна шкоди від атаки:
() => { attack1.ChangeAttackDmg(15); attack2.ChangeAttackDmg(25); }
Лямбда-функція, яка змінює шкоду від атаки attack1
на 15
та attack2
на 25
.
Перехід у Лють
rageTransition
— це перехід, який переводить ворога в RageState
, коли виконуються певні умови. Цей перехід розроблений для того, щоб зробити ворога більш грізним, коли його здоров'я падає нижче певного порогу і він ще не увійшов у стан люті.
Визначення Переходу
Умова:
Перехід перевіряє, чи здоров'я ворога менше або дорівнює 40 і чи ворог ще не увійшов у стан люті (haveRaged
є false
).
Якщо обидві умови виконуються, він встановлює haveRaged
у true
, щоб забезпечити вхід ворога в стан люті лише один раз, і повертає true
, щоб викликати перехід.
Відсоток Стану:
Перехід використовує new StatePourcentage(rage, 100f)
, щоб вказати, що коли умова виконана, ворог перейде в RageState
з ймовірністю 100%.
Чому Ми Зробили Це Так
Виклик Потужної Поведінки: rageTransition
дозволяє ворогу стати більш потужним, коли його здоров'я критично низьке, збільшуючи виклик для гравця. Цей перехід забезпечує вхід ворога в стан люті лише один раз, запобігаючи повторним переходам у стан люті.
Динамічний та Викликовий Ігровий Процес: Введення стану люті за критичних умов здоров'я робить ігровий процес більш динамічним та викликовим, вимагаючи від гравця адаптації своєї стратегії.
Як Це Працює в Контексті
Перевірка Здоров'я: Під час гри, коли ворог отримує пошкодження, його здоров'я контролюється. Коли здоров'я ворога падає до 40 або нижче і він ще не увійшов у стан люті, умова rageTransition
виконується.
Виклик Стану Люті: Як тільки умова виконується, haveRaged
встановлюється у true
, і перехід до RageState
викликається з ймовірністю 100%.
Вхід у Стан Люті: RageState
ініціюється, збільшуючи шкоду атаки ворога і постійно додаючи здоров'я, що робить ворога значно важчим для перемоги.
Дякуємо за ваш відгук!