Пионер в някои от най-ранните видеоигри в света, здравето е често срещана механика, която продължава да присъства в много от най-популярните заглавия днес. Health прави възможно използването на сложна бойна механика, създаването на прогресия на играча и да направи играта ви по-интуитивна. Но как да добавите здравна система към собствените си игри?
Unity3D улеснява добавянето на 2D UI елементи към 3D игри, така че е чудесно място да започнете да изследвате лентите за здраве за първи път.
Какво ще научите
На пръв поглед този проект може да не изглежда сложен. Въпреки това ще трябва да разберете няколко ключови концепции за кодиране на Unity3D, за да създадете работеща лента за здраве. Това означава, че има какво да научите, докато преминавате през този проект, включително:
- Как да създадете 2D UI елементи/спрайтове в Unity3D.
- Как да редактирате компоненти на игрови обекти с код.
- Как да споделяте променливи между скриптове в Unity3D.
Стъпка 1: Настройте вашата сцена
Преди да можете да започнете да кодирате вашата лента за здраве, имате нужда от сцена с модел на играч, към който да се приложи. За да започнете, можете да следвате нашия базирано на физика Unity3D ръководство за управление на знаци за създаване на модел на играч с основни контроли.
С налична сцена и модел на плейър е време да добавите UI елемент. Щракнете с десния бутон в прозореца на йерархията и изберете потребителски интерфейс > Изображение. Това ще създаде два нови елемента във вашата йерархия: родителски обект Canvas и дъщерен обект Image. Променете името на дъщерния обект на Healthbar. Изберете ширина, височина и позиция за вашата здравна лента с помощта на инспектора.
Можете да добавите малко по-голямо изображение на потребителския интерфейс с черен цвят, за да действа като фон/рамка за лентата на здравето. Просто се уверете, че е над лентата за здраве в йерархията, така че да се показва зад нея.
Този елемент на потребителския интерфейс работи като основа за вашата лента за здраве, но вие също се нуждаете от спрайт, за да го анимирате. Отидете в прозореца на проекта, щракнете с десния бутон и изберете Създавайте > 2D > Спрайтове > Квадрат.
Изберете Healthbar от йерархията и плъзнете спрайта, който току-що създадохте, в полето за избор на изходно изображение в инспектора. Можете също да промените Тип изображение до Напълнен, Метод на попълване до хоризонтално и Произход на попълване наляво. Сега, ако стартирате играта си и използвате Попълнете количество плъзгач, трябва да видите лентата на здравето ви да се свива и расте.
Ако не можете да видите менюто на компонента на потребителския интерфейс, отидете на Прозорец > Диспечер на пакетии се уверете, че сте инсталирали 2D пакета.
Стъпка 2: Добавяне на променлива за здравето
Няма да има голям смисъл в създаването на здравна лента без здравна променлива, която да диктува нейното състояние. Други скриптове трябва да имат достъп до тази променлива и има смисъл да я поставите някъде централно. Добавете го към скрипта за управление на символи като публичен плаващ елемент:
публиченплавам здраве на играча = 1.0f;
Използването на float за тази променлива означава, че можете лесно да представите произволен процент от 0 до 100, за да съответства на променливата за количеството на запълване на изображението на лентата за здраве. Например, здраве на играча от 0,5f е 50% от ширината на лентата за здраве.
Стъпка 3: Споделете променливи между скриптове в Unity
Променливите обикновено работят в рамките на собствените си функции и скриптове. Това ги прави недостъпни от други функции и скриптове, освен ако не предприемете стъпки, за да кажете на кода къде да намери променливите, с които искате да работите.
Започнете, като създадете нов скриптов файл, наречен Health, за да съхранявате кода. Можете да плъзнете и пуснете този скрипт върху потребителския елемент на Healthbar, създаден в първата стъпка. Следният код влиза във функцията void Update().
Този процес започва с намирането на игровия обект, който притежава променливата. В този случай това е обектът Character_Model:
GameObject Character_Model = GameObject. Намирам("Модел_на_знак");
След това е време да намерите компонента на скрипта, който съдържа променливата, с която трябва да работите.
Character_Control character_Control = Модел_на_символ. GetComponent();
И накрая, можете да извлечете конкретната променлива, която търсите. В този случай това е променливата playerHealth, която сте добавили към вашия контролер за герои. Присвоете това на плаваща променлива в рамките на текущия скрипт, наречен currentHealth.
currentHealth = character_Control.playerHealth;
Необходими са само няколко реда код, за да получите променливата, от която се нуждаете, и можете да приложите този метод винаги, когато имате нужда от достъп до здравето на вашия играч. Вашият код трябва да изглежда така, след като сте готови:
използвайки Система. колекции;
използвайки Система. Колекции. Generic;
използвайки UnityEngine;
използвайки UnityEngine. потребителски интерфейс;публиченкласЗдраве: Моноповедение
{
публиченплавам текущо здраве;невалиденЗапочнете()
{
}
невалиденАктуализация()
{
GameObject Character_Model = GameObject. Намирам("Модел_на_знак");
Character_Control character_Control = Модел_на_символ. GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Стъпка 4: Програмирайте игровия обект на UI Health Bar
Сега, след като сте създали потребителски елемент на лентата за здраве и имате достъп до променливата за здравето на играча, е време да ги накарате да работят заедно. За да започнете, добавете частна статична променлива, която ще съдържа компонента на изображението на вашата лента за здраве:
частенстатичен Image Healthbar;
След това можете да присвоите компонента на изображението към тази променлива в рамките на функцията void Start(), която се изпълнява само веднъж.
Healthbar = GetComponent();
Сега, след като имате всичките си променливи на място, можете да използвате кода от предишната стъпка, за да зададете ширината на запълване на обекта на потребителския интерфейс на лентата за здраве. Не е необходимо да извършвате преобразуване тук; както здравето на играча, така и количеството за запълване на лентата за здраве са плаващи променливи.
Healthbar.fillAmount = currentHealth;
С този код на място, лентата ви за здраве ще се запълва нагоре и надолу въз основа на променливата за здраве, намерена в кода Character_Control. Това обаче е малко скучно и определено може да се справи с малко цвят.
Започнете с добавяне на нов цвят, за да направите лентата на здравето светлозелена, когато играчът има много здраве.
Цвят зелен Здраве = нов цвят(0,6f, 1, 0,6f, 1);
След това добавете оператор if, за да проверите дали здравето на играча е над 0,3f, т.е. 30% или повече. Ако е по-висока от 0,3f, задайте лентата за здраве да съответства на цвета, който току-що сте добавили. Ако е под 0.3f, оцветете лентата на здравето в червено.
ако (текущо здраве >= 0.3f) {
Healthbar.color = greenHealth;
} друго {
Healthbar.color = Color.red;
}
Стъпка 5: Тестване на кода
Както можете да видите от пълния код по-долу, този проект е доста прост, когато всичко е заедно. Разбира се обаче, имате нужда от начин да тествате кода си.
използвайки Система. колекции;
използвайки Система. Колекции. Generic;
използвайки UnityEngine;
използвайки UnityEngine. потребителски интерфейс;публиченкласЗдраве: Моноповедение
{
частенстатичен Image Healthbar;
публиченплавам текущо здраве;невалиденЗапочнете()
{
Healthbar = GetComponent();
}невалиденАктуализация()
{
GameObject Character_Model = GameObject. Намирам("Модел_на_знак");
Character_Control character_Control = Модел_на_символ. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;Цвят зелен Здраве = нов цвят(0,6f, 1, 0,6f, 1);
ако (текущо здраве >= 0.3f) {
Healthbar.color = greenHealth;
} друго {
Healthbar.color = Color.red;
}
}
}
Можете да добавите един ред код към скрипта Character_Control, за да направите възможно тестването. Всеки път, когато играчът натисне клавиша W, за да се придвижи напред, премахва малко количество здраве. Можете да добавите същия код към всеки скрипт с достъп до променливата playerHealth за същите резултати:
здраве на играча -= 0,001f;
Можете също така да помислите за добавяне на уникални активи към вашия Unity проект. Можеш намерете безплатни активи на Unity в мрежата, което ви дава възможност да оживите проекта си, без да се налага да харчите пари.
Изграждане на ленти за здраве в Unity3D
Вашата игра започва да се оформя сега, когато имате лента за здраве за вашия герой. Има още много работа за вършене, но вече трябва да имате някои от ключовите умения, от които се нуждаете, за да започнете да постигате реален напредък. Разбира се, никога не пречи да прочетете повече ръководства.