Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Впервые появившись в некоторых из самых ранних видеоигр в мире, здоровье — это обычная механика, которая сохраняется во многих самых популярных сегодня играх. Здоровье позволяет использовать сложную боевую механику, создавать прогресс игрока и делать вашу игру более интуитивной. Но как добавить систему здоровья в собственные игры?

Unity3D упрощает добавление 2D-элементов пользовательского интерфейса в 3D-игры, так что это отличное место для первого знакомства с индикаторами здоровья.

Чему вы научитесь

На первый взгляд этот проект может показаться несложным. Несмотря на это, вам необходимо понять несколько ключевых концепций кодирования Unity3D, чтобы создать работающую панель работоспособности. Это означает, что в процессе работы над проектом вам предстоит многому научиться, в том числе:

  • Как создавать 2D-элементы/спрайты пользовательского интерфейса в Unity3D.
  • instagram viewer
  • Как редактировать компоненты игрового объекта с помощью кода.
  • Как обмениваться переменными между скриптами в Unity3D.

Шаг 1: Настройте свою сцену

Прежде чем вы сможете начать программировать свою полосу здоровья, вам нужна сцена с моделью игрока, к которой она будет применяться. Для начала вы можете подписаться на нашу руководство по контроллеру персонажей Unity3D на основе физики для создания модели игрока с базовыми элементами управления.

Когда сцена и модель игрока готовы, пришло время добавить элемент пользовательского интерфейса. Щелкните правой кнопкой мыши внутри окна Hierarchy и выберите интерфейс > Изображение. Это создаст два новых элемента в вашей иерархии: родительский объект Canvas и дочерний объект Image. Измените имя дочернего объекта на Healthbar. Выберите ширину, высоту и положение полосы здоровья с помощью инспектора.

Вы можете добавить немного большее изображение пользовательского интерфейса с черным цветом, чтобы оно действовало как фон/граница для полосы здоровья. Просто убедитесь, что он находится над полосой здоровья в иерархии, чтобы он отображался за ней.

Этот элемент пользовательского интерфейса служит основой для вашей шкалы здоровья, но вам также нужен спрайт для его анимации. Перейдите на панель «Проект», щелкните правой кнопкой мыши и выберите Создавать > 2D > Спрайты > Квадрат.

Выберите Healthbar из иерархии и перетащите только что созданный спрайт в поле выбора исходного изображения внутри инспектора. Вы также можете изменить Тип изображения заполненный, Метод заполнения по горизонтали и Заполнить начало налево. Теперь, если вы запустите игру и используете Сумма заполнения ползунка, вы должны увидеть, как ваша полоса здоровья уменьшается и растет.

Если вы не видите меню компонентов пользовательского интерфейса, перейдите к Окно > Диспетчер пакетов, и убедитесь, что у вас установлен пакет 2D.

Шаг 2. Добавьте переменную работоспособности

Не было бы особого смысла в создании полосы здоровья без переменной здоровья, определяющей ее состояние. Другие скрипты должны иметь доступ к этой переменной, и имеет смысл разместить ее где-то в центре. Добавьте его в скрипт управления персонажем как публичный поплавок:

публичныйплавать здоровье игрока = 1.0f;

Использование числа с плавающей запятой для этой переменной означает, что вы можете легко представить любой процент от 0 до 100, чтобы соответствовать переменной Fill Amount изображения пользовательского интерфейса панели здоровья. Например, playerHealth со значением 0,5f составляет 50% ширины полосы здоровья.

Шаг 3: Делитесь переменными между скриптами в Unity

Переменные обычно работают в своих собственных функциях и сценариях. Это делает их недоступными из других функций и скриптов, если вы не предпримете шаги, чтобы сообщить коду, где найти переменные, с которыми вы хотите работать.

Начните с создания нового файла сценария с именем Health для размещения кода. Вы можете перетащить этот скрипт на элемент пользовательского интерфейса Healthbar, созданный на первом шаге. Следующий код входит в функцию void Update().

Этот процесс начинается с поиска игрового объекта, которому принадлежит переменная. В данном случае это объект Character_Model:

GameObject Character_Model = GameObject. Находить("Персонаж_Модель");

Затем пришло время найти компонент скрипта, который содержит переменную, с которой вам нужно работать.

Character_Control character_Control = Character_Model. ПолучитьКомпонент();

И, наконец, вы можете извлечь конкретную переменную, которую ищете. В данном случае это переменная playerHealth, которую вы добавили в свой контроллер персонажа. Назначьте это переменной с плавающей запятой в текущем сценарии с именем currentHealth.

currentHealth = character_Control.playerHealth;

Требуется всего несколько строк кода, чтобы получить нужную вам переменную, и вы можете применять этот метод всякий раз, когда вам нужно получить доступ к состоянию здоровья вашего игрока. Ваш код должен выглядеть так, как только вы закончите:

с использованием Система. Коллекции;
с использованием Система. Коллекции. универсальный;
с использованием ЮнитиДвигатель;
с использованием UnityEngine. интерфейс;

публичныйсортЗдоровье: моноповедение
{
публичныйплавать текущее здоровье;

пустотаНачинать()
{
}

пустотаОбновлять()
{
GameObject Character_Model = GameObject. Находить("Персонаж_Модель");
Character_Control character_Control = Character_Model. ПолучитьКомпонент();
currentHealth = character_Control.playerHealth;
}
}

Шаг 4. Запрограммируйте игровой объект «Панель состояния пользовательского интерфейса»

Теперь, когда вы создали элемент пользовательского интерфейса панели здоровья и получили доступ к переменной здоровья игрока, пришло время заставить их работать вместе. Для начала добавьте приватную статическую переменную, которая будет содержать компонент изображения вашей панели здоровья:

частныйстатический Панель здоровья изображения;

Затем вы можете назначить компонент изображения этой переменной в функции void Start(), которая запускается только один раз.

Панель здоровья = ПолучитьКомпонент();

Теперь, когда у вас есть все ваши переменные, вы можете использовать код из предыдущего шага, чтобы установить ширину заполнения объекта пользовательского интерфейса панели работоспособности. Здесь вам не нужно выполнять какое-либо преобразование; как здоровье игрока, так и количество заполненных полосок здоровья являются переменными с плавающей запятой.

Healthbar.fillAmount = текущее здоровье;

С этим кодом ваша полоса здоровья будет заполняться вверх и вниз в зависимости от переменной здоровья, найденной в коде Character_Control. Однако это немного скучно, и это определенно может быть связано с каким-то цветом.

Начните с добавления нового цвета, чтобы сделать полосу здоровья светло-зеленой, когда у игрока много здоровья.

Зеленый цветЗдоровье = новый Цвет(0,6f, 1, 0,6f, 1);

Затем добавьте оператор if, чтобы проверить, превышает ли здоровье игрока значение 0,3f, то есть 30% или более. Если он выше 0,3f, установите полосу здоровья в соответствии с цветом, который вы только что добавили. Если оно ниже 0,3f, полоса здоровья становится красной.

если (текущее здоровье >= 0,3f) {
Healthbar.color = зеленыйЗдоровье;
} еще {
Healthbar.color = Color.red;
}

Шаг 5: Тестирование кода

Как видно из полного кода ниже, этот проект довольно прост, когда все вместе. Однако, конечно, вам нужен способ проверить свой код.

с использованием Система. Коллекции;
с использованием Система. Коллекции. универсальный;
с использованием ЮнитиДвигатель;
с использованием UnityEngine. интерфейс;

публичныйсортЗдоровье: моноповедение
{
частныйстатический Панель здоровья изображения;
публичныйплавать текущее здоровье;

пустотаНачинать()
{
Панель здоровья = ПолучитьКомпонент();
}

пустотаОбновлять()
{
GameObject Character_Model = GameObject. Находить("Персонаж_Модель");
Character_Control character_Control = Character_Model. ПолучитьКомпонент();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = текущее здоровье;

Зеленый цветЗдоровье = новый Цвет(0,6f, 1, 0,6f, 1);

если (текущее здоровье >= 0,3f) {
Healthbar.color = зеленыйЗдоровье;
} еще {
Healthbar.color = Color.red;
}
}
}

Вы можете добавить одну строку кода в сценарий Character_Control, чтобы сделать возможным тестирование. Всякий раз, когда игрок нажимает клавишу W, чтобы двигаться вперед, он удаляет небольшое количество здоровья. Вы можете добавить тот же код в любой скрипт с доступом к переменной playerHealth для тех же результатов:

здоровье игрока -= 0,001f;

Вы также можете рассмотреть возможность добавления уникальных ресурсов в свой проект Unity. Ты можешь найти бесплатные активы Unity через Интернет, что дает вам возможность оживить свой проект, не тратя денег.

Создание полосок здоровья в Unity3D

Ваша игра начинает приобретать форму теперь, когда у вашего персонажа есть шкала здоровья. Предстоит еще много работы, но теперь у вас должны быть некоторые ключевые навыки, необходимые для реального прогресса. Однако, конечно, никогда не помешает прочитать больше руководств.