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

Зміст курсу

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

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

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

bookВідправити снаряд

Клас 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 за допомогою подій аніматора. Це дозволяє нам вказати точний кадр у анімації ворога, на якому ми хочемо, щоб снаряд був відправлений. Оскільки анімація складається з багатьох кадрів, важливо точно визначити момент для цієї дії.

Що відбувається, коли снаряд стикається з ігровим об'єктом, позначеним як "Player"?

Що відбувається, коли снаряд стикається з ігровим об'єктом, позначеним як "Player"?

Виберіть правильну відповідь

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

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

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

Секція 3. Розділ 9
some-alt