Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Kao pionir u nekim od najranijih svjetskih videoigara, zdravlje je uobičajena mehanika koja je prisutna u mnogim današnjim najpopularnijim naslovima. Zdravlje omogućuje upotrebu složene mehanike borbe, stvaranje napredovanja igrača i vašu igru ​​čini intuitivnijom. Ali kako dodati zdravstveni sustav svojim igrama?

Unity3D olakšava dodavanje 2D elemenata korisničkog sučelja u 3D igre, tako da je sjajno mjesto da po prvi put počnete istraživati ​​trake zdravlja.

Što ćete naučiti

Na površini se ovaj projekt možda i ne čini kompliciranim. Unatoč tome, morat ćete razumjeti nekoliko ključnih koncepata kodiranja Unity3D da biste stvorili radnu traku zdravlja. To znači da imate puno toga za naučiti dok prolazite kroz ovaj projekt, uključujući:

  • Kako stvoriti 2D UI elemente/spriteove u Unity3D.
  • Kako urediti komponente objekta igre pomoću koda.
  • Kako dijeliti varijable između skripti u Unity3D.

Korak 1: Postavite svoju scenu

Prije nego što počnete kodirati traku zdravlja, potrebna vam je scena s modelom igrača na koju ćete se primijeniti. Za početak možete pratiti naš Unity3D vodič za upravljanje likovima temeljen na fizici za izradu modela igrača s osnovnim kontrolama.

S modelom scene i igrača na mjestu, vrijeme je da dodate element korisničkog sučelja. Desnom tipkom miša kliknite unutar prozora Hijerarhije i odaberite korisničko sučelje > Slika. Ovo će stvoriti dvije nove stavke u vašoj hijerarhiji: roditeljski objekt Canvas i podređeni objekt Image. Promijenite naziv podređenog objekta u Healthbar. Pomoću inspektora odaberite širinu, visinu i položaj svoje zdravstvene trake.

Možete dodati malo veću sliku korisničkog sučelja s crnom bojom koja će služiti kao pozadina/obrub za traku zdravlja. Samo provjerite nalazi li se iznad trake zdravlja u hijerarhiji tako da se prikazuje iza nje.

Ovaj element korisničkog sučelja služi kao temelj za vašu zdravstvenu traku, ali također vam je potreban sprite da biste je animirali. Idite na okno Projekt, kliknite desnom tipkom miša i odaberite Stvoriti > 2D > Duhovi > Kvadrat.

Odaberite traku zdravlja iz hijerarhije i povucite duh koji ste upravo stvorili u okvir za odabir izvorne slike unutar inspektora. Možete i promijeniti Vrsta slike do ispunjeno, Metoda popunjavanja na vodoravno, i Porijeklo ispune lijevo. Sada ako pokrenete svoju igru ​​i koristite Iznos popune klizač trebali biste vidjeti kako se vaša traka zdravlja smanjuje i raste.

Ako ne možete vidjeti izbornik komponente korisničkog sučelja, idite na Prozor > Upravitelj paketa, i provjerite imate li instaliran 2D paket.

Korak 2: Dodajte varijablu zdravlja

Ne bi imalo smisla stvarati traku zdravlja bez varijable zdravlja koja bi određivala njezino stanje. Druge skripte moraju moći pristupiti ovoj varijabli i ima smisla staviti je negdje u središte. Dodajte ga u skriptu kontrole znakova kao javni float:

javnostplutati Zdravlje igrača = 1.0f;

Korištenje float za ovu varijablu znači da možete jednostavno predstaviti bilo koji postotak od 0 do 100, kako biste odgovarali varijabli količine popune slike korisničkog sučelja trake zdravlja. Na primjer, PlayerHealth od 0.5f je 50% širine trake zdravlja.

Korak 3: Podijelite varijable između skripti u Unityju

Varijable obično rade unutar vlastitih funkcija i skripti. To ih čini nedostupnima iz drugih funkcija i skripti osim ako ne poduzmete korake da kažete kodu gdje da pronađe varijable s kojima želite raditi.

Započnite stvaranjem nove datoteke skripte pod nazivom Zdravlje u koju ćete smjestiti kod. Ovu skriptu možete povući i ispustiti na element korisničkog sučelja Healthbar kreiran u prvom koraku. Sljedeći kod ulazi u funkciju void Update().

Ovaj proces počinje pronalaskom objekta igre koji posjeduje varijablu. U ovom slučaju, to je objekt Character_Model:

GameObject Character_Model = GameObject. Pronaći("Model_lika");

Zatim je vrijeme da pronađete komponentu skripte koja sadrži varijablu s kojom trebate raditi.

Kontrola_znaka Kontrola_znaka = Model_znaka. GetComponent();

I, konačno, možete izdvojiti određenu varijablu koju tražite. U ovom slučaju, to je varijabla playerHealth koju ste dodali svom kontroleru likova. Dodijelite ovo varijabli float unutar trenutne skripte pod nazivom currentHealth.

trenutno Zdravlje = Kontrola_karaktera.Zdravlje igrača;

Potrebno je samo nekoliko redaka koda da biste dobili varijablu koja vam je potrebna, a ovu metodu možete primijeniti kad god trebate pristupiti zdravlju vašeg igrača. Vaš bi kôd trebao izgledati ovako kada završite:

korištenjem Sustav. Zbirke;
korištenjem Sustav. Zbirke. Generički;
korištenjem UnityEngine;
korištenjem UnityEngine. UI;

javnostrazredaZdravlje: Monoponašanje
{
javnostplutati trenutnoZdravlje;

poništitiPočetak()
{
}

poništitiAžuriraj()
{
GameObject Character_Model = GameObject. Pronaći("Model_lika");
Kontrola_znaka Kontrola_znaka = Model_znaka. GetComponent();
trenutno Zdravlje = Kontrola_karaktera.Zdravlje igrača;
}
}

Korak 4: Programirajte objekt igre UI Health Bar

Sada kada ste izradili element korisničkog sučelja trake zdravlja i imate pristup varijabli zdravlja igrača, vrijeme je da ih natjerate da rade zajedno. Za početak dodajte privatnu statičku varijablu koja će sadržavati slikovnu komponentu vaše zdravstvene trake:

privatnastatički Slika Healthbar;

Zatim ovoj varijabli možete dodijeliti komponentu slike unutar funkcije void Start(), koja se pokreće samo jednom.

Traka zdravlja = GetComponent();

Sada kada imate sve svoje varijable na mjestu, možete upotrijebiti kod iz prethodnog koraka za postavljanje širine ispune objekta korisničkog sučelja zdravstvene trake. Ovdje ne morate izvršiti nikakvu konverziju; i zdravlje igrača i iznos ispunjenosti trake zdravlja su varijable s pomičnim stupnjem.

Healthbar.fillAmount = currentHealth;

S ovim kodom na mjestu, vaša traka zdravlja će se puniti gore-dolje na temelju varijable zdravlja koja se nalazi u kodu Character_Control. Ovo je ipak malo dosadno i definitivno bi moglo poslužiti s malo boje.

Započnite dodavanjem nove boje kako bi traka zdravlja bila svijetlozelene boje kada igrač ima puno zdravlja.

Boja zelenaZdravlje = novi Boja(0,6f, 1, 0,6f, 1);

Zatim dodajte if naredbu da provjerite je li igračevo zdravlje iznad 0,3f, tj. 30% ili više. Ako je viši od 0,3f, postavite traku zdravlja da odgovara boji koju ste upravo dodali. Ako je ispod 0,3f, okrenite traku zdravlja crveno.

ako (trenutno Zdravlje >= 0,3f) {
Healthbar.color = greenHealth;
} drugo {
Healthbar.color = Color.red;
}

Korak 5: Testiranje koda

Kao što možete vidjeti iz kompletnog koda u nastavku, ovaj projekt je prilično jednostavan kada se sve skupi. Naravno, potreban vam je način da testirate svoj kod.

korištenjem Sustav. Zbirke;
korištenjem Sustav. Zbirke. Generički;
korištenjem UnityEngine;
korištenjem UnityEngine. UI;

javnostrazredaZdravlje: Monoponašanje
{
privatnastatički Slika Healthbar;
javnostplutati trenutnoZdravlje;

poništitiPočetak()
{
Traka zdravlja = GetComponent();
}

poništitiAžuriraj()
{
GameObject Character_Model = GameObject. Pronaći("Model_lika");
Kontrola_znaka Kontrola_znaka = Model_znaka. GetComponent();
trenutno Zdravlje = Kontrola_karaktera.Zdravlje igrača;
Healthbar.fillAmount = currentHealth;

Boja zelenaZdravlje = novi Boja(0,6f, 1, 0,6f, 1);

ako (trenutno Zdravlje >= 0,3f) {
Healthbar.color = greenHealth;
} drugo {
Healthbar.color = Color.red;
}
}
}

Možete dodati jednu liniju koda u skriptu Character_Control kako biste omogućili testiranje. Kad god igrač pritisne tipku W za kretanje naprijed, uklanja malu količinu zdravlja. Možete dodati isti kod bilo kojoj skripti s pristupom varijabli playerHealth za iste rezultate:

Zdravlje igrača -= 0,001f;

Također možete razmotriti dodavanje jedinstvenih sredstava svom Unity projektu. Možeš pronađite besplatna sredstva Unityja diljem weba, dajući vam priliku da oživite svoj projekt bez trošenja novca.

Izrada traka zdravlja u Unity3D

Vaša igra počinje poprimati oblik sada kada imate postavljenu traku zdravlja za svog lika. Ima još puno posla, ali sada biste trebali imati neke od ključnih vještina koje su vam potrebne da počnete stvarno napredovati. Naravno, nikad ne škodi pročitati više vodiča.