Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Відправити снаряд
Клас Projectile
відповідає за управління поведінкою снарядів, які ворог може запускати в гравця. Цей клас обробляє налаштування напрямку та швидкості снаряда, оновлення його руху та обробку зіткнень.
Метод Setup
Призначення: Цей метод встановлює початковий стан снаряда.
Параметри: Приймає параметр Vector2 direction
для встановлення напрямку, в якому буде рухатися снаряд.
Дії: Встановлює напрямок снаряда, отримує компонент Rigidbody2D
, прикріплений до снаряда, обертає снаряд, щоб він був спрямований у напрямку руху, і планує знищення снаряда через 6 секунд, щоб запобігти його нескінченному існуванню.
Метод Update
Призначення: Цей метод оновлює рух снаряда.
Дії: Встановлює швидкість Rigidbody2D
, щоб переміщати снаряд у заданому напрямку з заданою швидкістю.
Метод OnTriggerEnter2D
Призначення: Цей метод обробляє зіткнення з іншими об'єктами.
Параметри: Приймає параметр Collider2D collision
для виявлення зіткнень.
Дії: Виводить у лог ім'я об'єкта, з яким зіткнувся снаряд, перевіряє, чи зіткнувся снаряд з об'єктом з тегом "Player", і якщо об'єкт має компонент, що реалізує інтерфейс IGetAttacked
, викликає метод GetAttacked
на цьому компоненті для нанесення шкоди. Нарешті, знищує снаряд після того, як він вдарив гравця.
Чому ми зробили це так
Модульність та повторне використання: Клас Projectile
розроблений для модульності та повторного використання для будь-якого типу снарядів, які може використовувати ворог. Встановлюючи напрямок і швидкість, можна створювати різні снаряди з різною поведінкою.
Ефективне управління рухом: Використання компонента Rigidbody2D
для руху забезпечує, що снаряд поводиться відповідно до фізичної системи Unity, забезпечуючи плавний і реалістичний рух.
Виявлення зіткнень та обробка шкоди: Метод OnTriggerEnter2D
забезпечує, що снаряд може виявляти зіткнення з гравцем і завдавати шкоди належним чином, роблячи взаємодію між снарядом і гравцем ефективною.
Клас SendProjectileState
Клас SendProjectileState
є специфічним станом, який обробляє поведінку ворога під час запуску снаряда. Цей клас наслідує від класу State
і включає методи для початку, завершення та ініціації дії атаки снарядом.
Конструктор
Конструктор ініціалізує SendProjectileState
з Animator
для анімацій та дією для відправки снаряда. Він встановлює ці значення у відповідні змінні-члени.
Метод StartState
Цей метод встановлює isStateFinished
у false
і запускає анімацію снаряда, встановлюючи булевий параметр "projectil" в аніматорі на true
.
Метод StartAction
Цей метод викликає sendProjectileFunc
, який виконує дію, визначену для відправки снаряда. Цей метод зазвичай викликається подією аніматора для синхронізації запуску снаряда з анімацією.
Метод EndState
Цей метод зупиняє анімацію снаряда, встановлюючи булевий параметр "projectil" в аніматорі на false
.
Чому ми зробили це так
Модульність та повторне використання:
Клас SendProjectileState
розроблений для модульності, що дозволяє гнучку інтеграцію різних поведінок відправки снарядів через використання System.Action
.
Інтеграція анімації: Використовуючи параметри аніматора, стан забезпечує, що запуск снаряда синхронізований з відповідною анімацією, забезпечуючи плавний та реалістичний досвід.
Функція Відправлення Снаряду
Метод SendProjectile
відповідає за створення та запуск снаряду в напрямку гравця. Цей метод обчислює напрямок від ворога до гравця, створює снаряд і налаштовує його для руху в обчисленому напрямку.
Визначення Методу та Компоненти
Визначення Методу:
void SendProjectile()
: Цей метод не повертає значення і призначений для обробки запуску снаряду.
Компоненти:
Vector2 direction = (player.position - transform.position).normalized;
Цей рядок обчислює напрямок від ворога до гравця шляхом віднімання позиції ворога від позиції гравця. Частина .normalized
забезпечує, що вектор напрямку має довжину 1, роблячи його одиничним вектором, який вказує лише напрямок.
Instantiate(projectile, projectileSendingPosition.position, Quaternion.identity).Setup(direction);
Цей рядок створює новий екземпляр снаряду у вказаній позиції (projectileSendingPosition.position
) без обертання (Quaternion.identity
). Метод Setup
викликається на створеному снаряді для встановлення його напрямку.
Зв'язок з Аніматором Unity
Ми викликаємо функцію StartAction
за допомогою подій аніматора. Це дозволяє нам вказати точний кадр у анімації ворога, на якому ми хочемо, щоб снаряд був відправлений. Оскільки анімація складається з багатьох кадрів, важливо точно визначити момент для цієї дії.
Дякуємо за ваш відгук!