Zapoczątkowana w niektórych z najwcześniejszych gier wideo na świecie, zdrowie jest powszechną mechaniką, która utrzymuje się w wielu najpopularniejszych obecnie tytułach. Zdrowie umożliwia zastosowanie złożonej mechaniki walki, tworzenie postępów gracza i uczynienie gry bardziej intuicyjną. Ale jak dodać system zdrowia do własnych gier?
Unity3D ułatwia dodawanie elementów interfejsu użytkownika 2D do gier 3D, więc jest to świetne miejsce, aby po raz pierwszy rozpocząć odkrywanie pasków zdrowia.
Czego się nauczysz
Z pozoru ten projekt może nie wydawać się skomplikowany. Mimo to będziesz musiał zrozumieć kilka kluczowych koncepcji kodowania Unity3D, aby stworzyć działający pasek zdrowia. Oznacza to, że podczas realizacji tego projektu można się wiele nauczyć, w tym:
- Jak tworzyć elementy/sprite'y interfejsu użytkownika 2D w Unity3D.
- Jak edytować komponenty obiektów gry za pomocą kodu.
- Jak udostępniać zmienne między skryptami w Unity3D.
Krok 1: Skonfiguruj swoją scenę
Zanim zaczniesz kodować pasek zdrowia, potrzebujesz sceny z modelem gracza, do którego można by go zastosować. Aby rozpocząć, możesz śledzić nasze oparty na fizyce przewodnik po kontrolerze postaci Unity3D stworzyć model gracza z podstawowymi elementami sterującymi.
Po przygotowaniu sceny i modelu odtwarzacza czas dodać element interfejsu użytkownika. Kliknij prawym przyciskiem myszy w oknie Hierarchia i wybierz interfejs użytkownika > Obraz. Spowoduje to utworzenie dwóch nowych elementów w Twojej hierarchii: obiektu nadrzędnego Canvas i obiektu podrzędnego Image. Zmień nazwę obiektu podrzędnego na Healthbar. Wybierz szerokość, wysokość i położenie paska zdrowia za pomocą inspektora.
Możesz dodać nieco większy obraz interfejsu użytkownika z kolorem ustawionym na czarny, aby działał jako tło/obramowanie paska zdrowia. Upewnij się tylko, że znajduje się nad paskiem zdrowia w hierarchii, aby wyświetlał się za nim.
Ten element interfejsu użytkownika działa jako podstawa twojego paska zdrowia, ale potrzebujesz również duszka, aby go animować. Przejdź do okienka Projekt, kliknij prawym przyciskiem myszy i wybierz Tworzyć > 2D > Sprite'y > Kwadrat.
Wybierz pasek zdrowia z hierarchii i przeciągnij właśnie utworzonego duszka do pola wyboru obrazu źródłowego w inspektorze. Możesz też zmienić Typ obrazu do Wypełniony, Metoda wypełnienia do poziomego i Wypełnij pochodzenie do lewej. Teraz, jeśli uruchomisz grę i użyjesz pliku Wypełnij kwotę suwaka, powinieneś zobaczyć, jak twój pasek zdrowia kurczy się i rośnie.
Jeśli nie widzisz menu komponentu interfejsu użytkownika, przejdź do Okno > Menedżer pakietówi upewnij się, że masz zainstalowany pakiet 2D.
Krok 2: Dodaj zmienną zdrowotną
Tworzenie paska zdrowia bez zmiennej zdrowia, która dyktuje jego stan, nie miałoby większego sensu. Inne skrypty muszą mieć dostęp do tej zmiennej i sensowne jest umieszczenie jej gdzieś centralnie. Dodaj go do skryptu Kontroli postaci jako public float:
publicznyplatforma Zdrowie gracza = 1.0 f;
Użycie liczby zmiennoprzecinkowej dla tej zmiennej oznacza, że możesz łatwo przedstawić dowolną wartość procentową od 0 do 100, aby dopasować ją do zmiennej Kwota wypełnienia obrazu interfejsu użytkownika paska zdrowia. Na przykład zdrowie gracza o wartości 0,5f to 50% szerokości paska zdrowia.
Krok 3: Udostępnij zmienne między skryptami w Unity
Zmienne zwykle działają w ramach własnych funkcji i skryptów. To czyni je niedostępnymi z innych funkcji i skryptów, chyba że podejmiesz kroki, aby powiedzieć kodowi, gdzie znaleźć zmienne, z którymi chcesz pracować.
Zacznij od utworzenia nowego pliku skryptu o nazwie Health, w którym będzie przechowywany kod. Możesz przeciągnąć i upuścić ten skrypt na element interfejsu użytkownika paska zdrowia utworzony w pierwszym kroku. Poniższy kod przechodzi do funkcji void Update().
Ten proces rozpoczyna się od znalezienia obiektu gry, który jest właścicielem zmiennej. W tym przypadku jest to obiekt Character_Model:
GameObject Model_postaci = GameObject. Znajdować(„Model_postaci”);
Następnie nadszedł czas, aby znaleźć komponent skryptu zawierający zmienną, z którą musisz pracować.
Character_Control charakter_Control = Character_Model. GetComponent();
I na koniec możesz wyodrębnić konkretną zmienną, której szukasz. W tym przypadku jest to zmienna playerHealth, którą dodałeś do kontrolera postaci. Przypisz to do zmiennej typu float w bieżącym skrypcie o nazwie currentHealth.
bieżące zdrowie = znak_kontrola.zdrowie gracza;
Wystarczy kilka wierszy kodu, aby uzyskać potrzebną zmienną, i możesz zastosować tę metodę, gdy potrzebujesz dostępu do zdrowia swojego gracza. Twój kod powinien wyglądać tak, gdy skończysz:
za pomocą System. kolekcje;
za pomocą System. Kolekcje. Ogólny;
za pomocą Silnik Unity;
za pomocą UnityEngine. interfejs użytkownika;publicznyklasaZdrowie: JednoZachowanie
{
publicznyplatforma aktualneZdrowie;próżniaPoczątek()
{
}
próżniaAktualizacja()
{
GameObject Model_postaci = GameObject. Znajdować(„Model_postaci”);
Character_Control charakter_Control = Character_Model. GetComponent();
bieżące zdrowie = znak_kontrola.zdrowie gracza;
}
}
Krok 4: Zaprogramuj obiekt gry paska zdrowia interfejsu użytkownika
Po utworzeniu elementu interfejsu paska zdrowia i uzyskaniu dostępu do zmiennej dotyczącej zdrowia gracza nadszedł czas, aby współpracowały ze sobą. Aby rozpocząć, dodaj prywatną zmienną statyczną, która będzie zawierała komponent obrazu paska zdrowia:
prywatnystatyczny Pasek zdrowia obrazu;
Możesz następnie przypisać komponent obrazu do tej zmiennej w ramach funkcji void Start(), która działa tylko raz.
Pasek zdrowia = GetComponent();
Teraz, gdy masz już wszystkie zmienne, możesz użyć kodu z poprzedniego kroku, aby ustawić szerokość wypełnienia obiektu interfejsu użytkownika paska zdrowia. Nie musisz tutaj przeprowadzać żadnej konwersji; zarówno zdrowie gracza, jak i ilość wypełnienia paska zdrowia są zmiennymi zmiennoprzecinkowymi.
Healthbar.fillAmount = aktualne zdrowie;
Po umieszczeniu tego kodu pasek zdrowia będzie się wypełniał w górę i w dół w zależności od zmiennej zdrowia znajdującej się w kodzie Character_Control. Jest to jednak trochę nudne i zdecydowanie przydałoby się trochę koloru.
Zacznij od dodania nowego koloru, aby pasek zdrowia miał jasnozielony kolor, gdy gracz ma dużo zdrowia.
Kolor zielonyZdrowie = nowy Kolor(0,6 f, 1, 0,6 f, 1);
Następnie dodaj instrukcję if, aby sprawdzić, czy zdrowie gracza jest powyżej 0,3f, czyli 30% lub więcej. Jeśli jest wyższy niż 0,3f, ustaw pasek zdrowia tak, aby odpowiadał kolorowi, który właśnie dodałeś. Jeśli jest poniżej 0,3f, zmień kolor paska zdrowia na czerwony.
Jeśli (aktualne zdrowie >= 0,3 f) {
Pasek zdrowia.kolor = zielonyZdrowie;
} w przeciwnym razie {
Pasek zdrowia.kolor = Kolor.czerwony;
}
Krok 5: Testowanie kodu
Jak widać z pełnego kodu poniżej, ten projekt jest dość prosty, gdy wszystko jest razem. Oczywiście potrzebujesz sposobu na przetestowanie kodu.
za pomocą System. kolekcje;
za pomocą System. Kolekcje. Ogólny;
za pomocą Silnik Unity;
za pomocą UnityEngine. interfejs użytkownika;publicznyklasaZdrowie: JednoZachowanie
{
prywatnystatyczny Pasek zdrowia obrazu;
publicznyplatforma aktualneZdrowie;próżniaPoczątek()
{
Pasek zdrowia = GetComponent();
}próżniaAktualizacja()
{
GameObject Model_postaci = GameObject. Znajdować(„Model_postaci”);
Character_Control charakter_Control = Character_Model. GetComponent();
bieżące zdrowie = znak_kontrola.zdrowie gracza;
Healthbar.fillAmount = aktualne zdrowie;Kolor zielonyZdrowie = nowy Kolor(0,6 f, 1, 0,6 f, 1);
Jeśli (aktualne zdrowie >= 0,3 f) {
Pasek zdrowia.kolor = zielonyZdrowie;
} w przeciwnym razie {
Pasek zdrowia.kolor = Kolor.czerwony;
}
}
}
Możesz dodać pojedynczy wiersz kodu do skryptu Character_Control, aby umożliwić testowanie. Za każdym razem, gdy gracz naciska klawisz W, aby przejść do przodu, usuwa niewielką ilość zdrowia. Możesz dodać ten sam kod do dowolnego skryptu z dostępem do zmiennej playerHealth, aby uzyskać te same wyniki:
Zdrowie gracza -= 0,001 f;
Możesz także rozważyć dodanie unikalnych zasobów do swojego projektu Unity. Możesz znajdź darmowe zasoby Unity w Internecie, dając szansę ożywienia projektu bez konieczności wydawania jakichkolwiek pieniędzy.
Budowanie pasków zdrowia w Unity3D
Twoja gra zaczyna nabierać kształtu teraz, gdy masz pasek zdrowia dla swojej postaci. Nadal jest dużo pracy do wykonania, ale powinieneś już mieć kilka kluczowych umiejętności potrzebnych do robienia prawdziwych postępów. Oczywiście przeczytanie większej liczby poradników nigdy nie zaszkodzi.