Jak zaprojektować i zakodować pasek zdrowia w Unity3D

Jak zaprojektować i zakodować pasek zdrowia w Unity3D

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 musisz 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 skorzystać z naszego opartego na fizyce przewodnika po kontrolerze postaci Unity3D, aby stworzyć model gracza z podstawowymi elementami sterującymi.

Po przygotowaniu sceny i modelu odtwarzacza nadszedł czas na dodanie elementu interfejsu użytkownika. Kliknij prawym przyciskiem myszy w oknie Hierarchia i wybierz UI > Image . 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.

unity dodaj obraz interfejsu użytkownika

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 panelu Projekt, kliknij prawym przyciskiem myszy i wybierz Utwórz > 2D > Sprites > Kwadrat .

Unity dodaje nowego sprite'a

Wybierz pasek zdrowia z hierarchii i przeciągnij właśnie utworzonego duszka do pola wyboru obrazu źródłowego w inspektorze. Możesz także zmienić Typ obrazu na Wypełniony, Sposób wypełnienia na Poziomy i Początek wypełnienia na Lewy. Teraz, jeśli uruchomisz grę i użyjesz suwaka Wypełnij , powinieneś zobaczyć, jak twój pasek zdrowia kurczy się i rośnie.

dodaj duszka jako komponent obiektu

Krok 2: Dodaj zmienną zdrowotną

Nie byłoby większego sensu tworzenie paska zdrowia bez zmiennej zdrowia, która dyktuje jego stan. 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:

public float playerHealth = 1.0f;

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 Character_Model = GameObject.Find("Character_Model");

Następnie nadszedł czas, aby znaleźć komponent skryptu zawierający zmienną, z którą musisz pracować.

Character_Control character_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.

currentHealth = character_Control.playerHealth;

Wystarczy kilka wierszy kodu, aby uzyskać potrzebną zmienną, i możesz zastosować tę metodę zawsze, gdy potrzebujesz dostępu do zdrowia swojego gracza. Twój kod powinien wyglądać tak, gdy skończysz:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Health: MonoBehaviour
{
    public float currentHealth;

    void Start()
    {
    }

    void Update()
    {
        GameObject Character_Model = GameObject.Find("Character_Model");
        Character_Control character_Control = Character_Model.GetComponent();
        currentHealth = character_Control.playerHealth;
    }
}

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:

private static Image Healthbar;

Możesz następnie przypisać komponent obrazu do tej zmiennej w ramach funkcji void Start(), która działa tylko raz.

Healthbar = 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 = currentHealth;

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.

Color greenHealth = new Color(0.6f, 1, 0.6f, 1);

Następnie dodaj instrukcję if, aby sprawdzić, czy zdrowie gracza przekracza 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.

if (currentHealth >= 0.3f) {
    Healthbar.color = greenHealth;
} else {
    Healthbar.color = Color.red;
}

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.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Health: MonoBehaviour
{
    private static Image Healthbar;
    public float currentHealth;

    void Start()
    {
        Healthbar = GetComponent();
    }

    void Update()
    {
        GameObject Character_Model = GameObject.Find("Character_Model");
        Character_Control character_Control = Character_Model.GetComponent();
        currentHealth = character_Control.playerHealth;
        Healthbar.fillAmount = currentHealth;

        Color greenHealth = new Color(0.6f, 1, 0.6f, 1);

        if (currentHealth >= 0.3f) {
            Healthbar.color = greenHealth;
        } else {
           Healthbar.color = Color.red;
       }
    }
}

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:

playerHealth -= 0.001f;

Możesz także rozważyć dodanie unikalnych zasobów do swojego projektu Unity. Możesz znaleźć bezpłatne zasoby Unity w Internecie, co daje szansę ożywienia projektu bez konieczności wydawania 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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *