Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Стан Dash | Поведінка Ворога
Бійцівська гра в Unity
course content

Зміст курсу

Бійцівська гра в Unity

Бійцівська гра в Unity

1. Система анімації Unity
2. Поведінка гравця
3. Поведінка Ворога
4. Покращення гри
5. Покращення гри Flappy Bird

book
Стан Dash

Animator Controller

Призначення AnimatorController

Клас AnimatorController призначений для керування та запуску поведінки ворога через події аніматора. Це дозволяє безперешкодно інтегрувати переходи анімацій та зміни станів, забезпечуючи відповідність поведінки ворога його анімаціям.

Визначення класу та змінна-член

Визначення класу: public class AnimatorController : MonoBehaviour визначає клас, який наслідується від MonoBehaviour, що дозволяє прикріпити його до GameObject в Unity.

Змінна-член: [SerializeField] Enemy enemy; - це серіалізоване поле, яке дозволяє зв'язати об'єкт Enemy з AnimatorController безпосередньо з інспектора Unity. Змінна enemy є посиланням на скрипт ворога, який містить функції, що керують поведінкою ворога.

Методи

Метод FinishMovement: public void FinishMovement(): Цей метод викликає enemy.FinishMovement(). Він призначений для виклику подією аніматора, сигналізуючи про завершення анімації руху.

Метод EndCurrentState: public void EndCurrentState(): Цей метод викликає enemy.EndCurrentState(). Він призначений для виклику подією аніматора, щоб сигналізувати про завершення поточного стану.

Інтеграція з Подіями Аніматора

Події Аніматора: Події аніматора - це спеціальні події, які можуть бути розміщені на часових шкалах анімацій в Animator Unity. Ці події можуть викликати функції в скриптах, прикріплених до того ж GameObject або його дочірніх об'єктів.

Як це працює: Під час анімації, такої як анімація бігу або атаки, певні точки на часовій шкалі можуть викликати події.

Стан Ривка

Пояснення класу DashState

Клас DashState - це специфічний стан, який обробляє поведінку ривка ворога. Цей клас наслідує від класу State і включає методи для початку, оновлення та завершення стану ривка, а також обробки події завершення руху.

Конструктор

Конструктор ініціалізує DashState з необхідними компонентами: Rigidbody2D для руху, Animator, Transform для гравця та швидкість ривка. Він встановлює початковий масштаб і ініціалізує вектор швидкості.

Метод StartState

Цей метод встановлює isStateFinished на false і запускає анімацію ривка, встановлюючи булевий параметр "dash" в аніматорі на true. Він також скидає прапор stopDashing на false.

Метод FinishMovement

Цей метод встановлює stopDashing в true, що зупиняє дію ривка в методі UpdateState.

Метод UpdateState

Цей метод оновлює позицію та орієнтацію ворога на основі позиції гравця. Якщо stopDashing дорівнює true, метод повертається раніше, зупиняючи подальші оновлення. Він коригує масштаб ворога, щоб той дивився на гравця, обчислює швидкість на основі швидкості та застосовує цю швидкість до Rigidbody2D.

Метод EndState

Цей метод зупиняє анімацію ривка, встановлюючи булевий параметр "dash" в аніматорі на false.

Чому ми зробили це так

Прапорець stopDashing дозволяє точно контролювати, коли ривок повинен зупинитися, роблячи поведінку більш чутливою до подій гри. Постійно оновлюючи позицію та напрямок ворога, DashState забезпечує швидкий та точний ривок ворога до гравця. Використання параметрів аніматора гарантує, що анімації ворога правильно синхронізовані з його рухами, забезпечуючи плавний та реалістичний досвід.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6
We're sorry to hear that something went wrong. What happened?
some-alt