Зміст курсу
Бійцівська гра в Unity
Бійцівська гра в Unity
Інтерфейсна шкала здоров'я
Клас Player включає код для оновлення інтерфейсу смуги здоров'я на основі поточного здоров'я гравця. Це керується за допомогою трьох змінних: UIHealthTransform
, HealthUIScale
та startingHealthUIWidth
. Нижче наведено пояснення, як ці змінні використовуються для управління смугою здоров'я.
Скрипт для смуги здоров'я
// Initialization in Start method
private void Start()
{
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
// Updating health in GetAttacked method
public void GetAttacked(int damage)
{
if (isDead) return;
health -= damage;
HealthUIScale.x = health * startingHealthUIWidth / 100f;
UIHealthTransform.sizeDelta = HealthUIScale;
if (health <= 0)
{
isDead = true;
animator.SetBool("death", true);
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
deathParticle.Play();
Destroy(deathParticle.gameObject, 5);
GameManager.instance.FinishGame();
}
}
Ініціалізація в методі Start
У методі Start
початковий розмір смуги здоров'я захоплюється та зберігається.
private void Start()
{
// ... other initializations ...
HealthUIScale = UIHealthTransform.sizeDelta;
startingHealthUIWidth = HealthUIScale.x;
}
Оновлення здоров'я в методі GetAttacked
Метод GetAttacked
оновлює інтерфейс користувача смуги здоров'я щоразу, коли гравець отримує пошкодження.
Зменшення здоров'я:
health -= damage;
Здоров'я гравця зменшується на величину отриманого пошкодження.
Розрахунок масштабу смуги здоров'я:
HealthUIScale.x = health * startingHealthUIWidth / 100f;
Пояснення
Цей рядок коду оновлює ширину смуги здоров'я на основі поточного здоров'я гравця. Ось як це працює:
Здоров'я:
health
— це число з плаваючою комою, яке представляє поточне здоров'я гравця. Припустимо, воно варіюється від 0 до 100.
Початкова ширина смуги здоров'я:
startingHealthUIWidth
— це число з плаваючою комою, яке представляє початкову ширину смуги здоров'я, коли у гравця повне здоров'я.
Масштабування ширини смуги здоров'я: Мета полягає в тому, щоб пропорційно зменшити ширину смуги здоров'я у міру зменшення здоров'я гравця; Щоб досягти цього, потрібно розрахувати, який відсоток здоров'я гравця залишився, а потім застосувати цей відсоток до початкової ширини смуги здоров'я.
Пошаговий розрахунок
Відсоток залишкового здоров'я:
Розділіть поточне здоров'я на 100, щоб отримати значення від 0 до 1, яке представляє відсоток залишкового здоров'я гравця. Наприклад, якщо здоров'я гравця становить 75, health / 100f
дасть 0.75
.
Цей розрахунок переводить значення здоров'я у відсотковий формат, придатний для відображення в інтерфейсі користувача.
Застосування відсотка до початкової ширини:
Помножте відсоток залишкового здоров'я на початкову ширину смуги здоров'я. Наприклад, якщо startingHealthUIWidth
дорівнює 200 (повна ширина), а здоров'я гравця становить 75%, нова ширина смуги здоров'я буде 150 одиниць (0.75 * 200 = 150
).
Використовуючи цей розрахунок, ширина смуги здоров'я динамічно та точно відображає поточне здоров'я гравця, надаючи гравцеві чіткий візуальний зворотний зв'язок.
Оновлення інтерфейсу панелі здоров'я:
UIHealthTransform.sizeDelta = HealthUIScale;
Розмір RectTransform
, що представляє панель здоров'я, оновлюється.
Перевірка смерті гравця:
if (health <= 0)
{
isDead = true;
animator.SetBool("death", true);
var deathParticle = Instantiate(deathParticles, transform.position, Quaternion.identity);
deathParticle.Play();
Destroy(deathParticle.gameObject, 5);
GameManager.instance.FinishGame();
}
Якщо здоров'я падає до 0 або нижче, гравець позначається як мертвий, і запускаються анімація смерті та частинки.
Підсумок функціональності інтерфейсу панелі здоров'я
Ініціалізація: Початковий розмір панелі здоров'я фіксується на початку.
Оновлення панелі здоров'я: Коли гравець отримує пошкодження, значення здоров'я зменшується, і ширина панелі здоров'я перераховується та оновлюється відповідно.
Смерть гравця: Якщо здоров'я досягає нуля, гравець позначається як мертвий, запускаються анімація смерті та частинки, і гра завершується.
Дякуємо за ваш відгук!