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
Відправлення Снаряда

csharp

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

Метод Setup

csharp

Призначення: Цей метод встановлює початковий стан снаряда.

Параметри: Приймає параметр Vector2 direction для визначення напрямку руху снаряда.

Дії: Встановлює напрямок снаряда, отримує компонент Rigidbody2D, прикріплений до снаряда, повертає снаряд у напрямку руху та планує його знищення через 6 секунд, щоб уникнути нескінченного існування.

Метод Update

csharp

Призначення: Оновлює рух снаряда.

Дії: Встановлює швидкість Rigidbody2D, щоб перемістити снаряд у заданому напрямку з вказаною швидкістю.

Метод OnTriggerEnter2D

csharp

Призначення: Обробляє зіткнення з іншими об'єктами.

Параметри: Приймає параметр Collider2D collision для виявлення зіткнень.

Дії: Виводить у лог ім'я об'єкта, з яким зіткнувся снаряд, перевіряє, чи снаряд зіткнувся з об'єктом з тегом "Player", і якщо об'єкт має компонент, що реалізує інтерфейс IGetAttacked, викликає метод GetAttacked для нанесення шкоди. Після влучання у гравця снаряд знищується.

Чому реалізовано саме так

Модульність і повторне використання: Клас Projectile розроблений як модульний і придатний до повторного використання для будь-якого типу снарядів, які може використовувати ворог. Завдяки встановленню напрямку та швидкості можна створювати різні снаряди з різною поведінкою.

Ефективне керування рухом: Використання компонента Rigidbody2D для руху забезпечує відповідність снаряда фізичній системі Unity, що дає плавний і реалістичний рух.

Виявлення зіткнень і обробка шкоди: Метод OnTriggerEnter2D дозволяє снаряду виявляти зіткнення з гравцем і коректно завдавати шкоди, забезпечуючи ефективну взаємодію між снарядом і гравцем.

Клас SendProjectileState

csharp

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

Конструктор

Конструктор ініціалізує SendProjectileState за допомогою Animator для анімацій та дії для запуску снаряда. Він присвоює ці значення відповідним змінним-членам.

Метод StartState

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

Метод StartAction

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

Метод EndState

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

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

Модульність і повторне використання: Клас SendProjectileState розроблений як модульний, що дозволяє гнучко інтегрувати різні поведінки запуску снарядів за допомогою System.Action.

Інтеграція з анімацією: Використовуючи параметри аніматора, стан забезпечує синхронізацію запуску снаряда з відповідною анімацією, що створює плавний і реалістичний досвід.

Функція запуску снаряда

csharp

Метод 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 Animator

Ми викликаємо функцію StartAction за допомогою подій аніматора. Це дозволяє нам вказати точний кадр у анімації ворога, на якому має бути відправлений снаряд. Оскільки анімація складається з багатьох кадрів, важливо визначити точний момент для цієї дії.

question mark

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

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

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

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

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

book
Відправлення Снаряда

csharp

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

Метод Setup

csharp

Призначення: Цей метод встановлює початковий стан снаряда.

Параметри: Приймає параметр Vector2 direction для визначення напрямку руху снаряда.

Дії: Встановлює напрямок снаряда, отримує компонент Rigidbody2D, прикріплений до снаряда, повертає снаряд у напрямку руху та планує його знищення через 6 секунд, щоб уникнути нескінченного існування.

Метод Update

csharp

Призначення: Оновлює рух снаряда.

Дії: Встановлює швидкість Rigidbody2D, щоб перемістити снаряд у заданому напрямку з вказаною швидкістю.

Метод OnTriggerEnter2D

csharp

Призначення: Обробляє зіткнення з іншими об'єктами.

Параметри: Приймає параметр Collider2D collision для виявлення зіткнень.

Дії: Виводить у лог ім'я об'єкта, з яким зіткнувся снаряд, перевіряє, чи снаряд зіткнувся з об'єктом з тегом "Player", і якщо об'єкт має компонент, що реалізує інтерфейс IGetAttacked, викликає метод GetAttacked для нанесення шкоди. Після влучання у гравця снаряд знищується.

Чому реалізовано саме так

Модульність і повторне використання: Клас Projectile розроблений як модульний і придатний до повторного використання для будь-якого типу снарядів, які може використовувати ворог. Завдяки встановленню напрямку та швидкості можна створювати різні снаряди з різною поведінкою.

Ефективне керування рухом: Використання компонента Rigidbody2D для руху забезпечує відповідність снаряда фізичній системі Unity, що дає плавний і реалістичний рух.

Виявлення зіткнень і обробка шкоди: Метод OnTriggerEnter2D дозволяє снаряду виявляти зіткнення з гравцем і коректно завдавати шкоди, забезпечуючи ефективну взаємодію між снарядом і гравцем.

Клас SendProjectileState

csharp

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

Конструктор

Конструктор ініціалізує SendProjectileState за допомогою Animator для анімацій та дії для запуску снаряда. Він присвоює ці значення відповідним змінним-членам.

Метод StartState

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

Метод StartAction

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

Метод EndState

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

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

Модульність і повторне використання: Клас SendProjectileState розроблений як модульний, що дозволяє гнучко інтегрувати різні поведінки запуску снарядів за допомогою System.Action.

Інтеграція з анімацією: Використовуючи параметри аніматора, стан забезпечує синхронізацію запуску снаряда з відповідною анімацією, що створює плавний і реалістичний досвід.

Функція запуску снаряда

csharp

Метод 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 Animator

Ми викликаємо функцію StartAction за допомогою подій аніматора. Це дозволяє нам вказати точний кадр у анімації ворога, на якому має бути відправлений снаряд. Оскільки анімація складається з багатьох кадрів, важливо визначити точний момент для цієї дії.

question mark

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

Select the correct answer

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

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

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

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