Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Додати частинки
Пояснення змін у методі Update
Метод Update
у скрипті ворога тепер включає логіку для оновлення менеджера станів, забезпечення того, щоб ворог був обернений до гравця, та обробку конкретного випадку, коли ворог знаходиться у стані DeathState
. Ця логіка була додана, щоб запобігти продовженню обертання ворога до гравця після його смерті.
Компоненти методу
Оновлення StateManager
stateManager.UpdateStates(Time.deltaTime)
Цей рядок оновлює менеджер станів, передаючи час, що минув з останнього кадру (Time.deltaTime
). Це забезпечує правильне оновлення поточного стану кожного кадру.
Перевірка DeathState
if (stateManager.GetCurrentState() is DeathState) return;
Цей рядок перевіряє, чи поточний стан є DeathState
.
Якщо ворог знаходиться у стані DeathState
, метод завершується раніше, запобігаючи подальшим оновленням для обертання до гравця або інших поведінок.
Обертання до гравця
Наступні рядки забезпечують, що ворог завжди обернений до гравця:
scale.x = transform.position.x > player.position.x ? -1 : 1;
Цей рядок перевіряє, чи позиція x ворога більша за позицію x гравця:
- Якщо так,
scale.x
встановлюється на-1
, змушуючи ворога обернутися вліво; - Якщо ні,
scale.x
встановлюється на1
, змушуючи ворога обернутися вправо.
transform.localScale = scale;
Цей рядок застосовує оновлений масштаб до трансформації ворога, забезпечуючи його обертання в правильному напрямку.
Чому ми зробили це так
Обробка стану смерті
Додавання перевірки для DeathState
забезпечує, що ворог не продовжує оновлювати свою поведінку або орієнтацію після смерті. Це важливо для підтримки логіки гри та запобігання несподіваним поведінкам після того, як ворог повинен бути неактивним.
Централізована логіка
Переміщуючи логіку обертання до гравця в метод Update
, ми централізуємо цю поведінку, зменшуючи надмірність і покращуючи підтримуваність коду.
Це забезпечує, що ворог завжди обернений до гравця незалежно від поточного стану, що спрощує код, специфічний для стану.
Пояснення обробки смерті ворога
Клас DeathState
є специфічним станом, який обробляє поведінку ворога, коли він помирає.
Чому ми зробили це так
Обробка поведінки смерті
Клас DeathState
спеціально управляє поведінкою ворога, коли він помирає, забезпечуючи відтворення анімації смерті та позначення стану як завершеного.
Інтеграція анімації
Використання параметрів аніматора забезпечує правильну синхронізацію анімації смерті зі зміною стану, надаючи плавний і реалістичний досвід.
Спавн частинок при смерті ворога
Цей код показує, як ворог обробляє свою смерть, коли його здоров'я досягає нуля. Він переходить до DeathState
і відтворює ефект частинок смерті.
Розбір Коду
Перевірка Здоров'я
if (health <= 0)
Ця умова перевіряє, чи здоров'я ворога впало до нуля або нижче.
Перехід до DeathState
stateManager.ChangeState(deathState)
Цей рядок переводить ворога в DeathState
за допомогою StateManager
.
Створення Частинок Смерті
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity)
Цей рядок створює екземпляр ефекту частинок смерті на позиції ворога.
deathParticles
- це префаб, що містить систему частинок для ефекту смерті.
Quaternion.identity
забезпечує відсутність обертання частинок.
Відтворення Частинок Смерті
deathParticle.Play()
Цей рядок відтворює створений ефект частинок.
Знищення Частинок Смерті
Destroy(deathParticle.gameObject, 5)
Цей рядок планує знищення об'єкта GameObject
ефекту частинок через 5 секунд, щоб він не залишався в грі нескінченно.
Чому Ми Зробили Це Так
Управління Станами:
Перехід до DeathState
забезпечує правильне управління поведінкою смерті ворога та виконання будь-якої специфічної логіки для стану смерті.
Візуальні Ефекти: Відтворення ефекту частинок смерті надає візуальний зворотний зв'язок гравцеві, покращуючи ігровий досвід.
Дякуємо за ваш відгук!