Зміст курсу
Бійцівська гра в 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
).
Завдяки цьому обчисленню ширина індикатора здоров'я динамічно та точно відображає поточний стан здоров'я гравця, забезпечуючи чіткий візуальний зворотний зв'язок.
Оновлення UI індикатора здоров'я:
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 або нижче, гравець позначається як мертвий, анімація смерті та частинки активуються.
Підсумок функціоналу UI смуги здоров'я
Ініціалізація: Початковий розмір смуги здоров'я фіксується на старті.
Оновлення смуги здоров'я: Коли гравець отримує ушкодження, значення здоров'я зменшується, і ширина смуги здоров'я перераховується та оновлюється відповідно.
Смерть гравця: Якщо здоров'я досягає нуля, гравець позначається як мертвий, активуються анімація смерті та частинки, а гра завершується.
Дякуємо за ваш відгук!