Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Стан 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
забезпечує швидкий та точний ривок ворога до гравця. Використання параметрів аніматора гарантує, що анімації ворога правильно синхронізовані з його рухами, забезпечуючи плавний та реалістичний досвід.
Дякуємо за ваш відгук!