Zdravje, ki je bilo uvedeno v nekaterih najzgodnejših video igrah na svetu, je običajna mehanika, ki vztraja v številnih najbolj priljubljenih naslovih današnjega časa. Zdravje omogoča uporabo zapletenih bojnih mehanik, ustvarjanje napredovanja igralcev in naredi vašo igro bolj intuitivno. Toda kako dodati zdravstveni sistem svojim igram?
Unity3D olajša dodajanje 2D elementov uporabniškega vmesnika v 3D igre, zato je odličen kraj za prvi začetek raziskovanja vrstic zdravja.
Kaj se boste naučili
Na prvi pogled se ta projekt morda ne zdi zapleten. Kljub temu boste morali razumeti več ključnih konceptov kodiranja Unity3D, da ustvarite delujočo vrstico zdravja. To pomeni, da se morate med tem projektom veliko naučiti, vključno z:
- Kako ustvariti 2D elemente uporabniškega vmesnika/sprite v Unity3D.
- Kako urediti komponente predmeta igre s kodo.
- Kako deliti spremenljivke med skripti v Unity3D.
1. korak: Nastavite svojo sceno
Preden lahko začnete kodirati vrstico zdravja, potrebujete sceno z modelom igralca, na katerega se bo nanašala. Za začetek lahko spremljate naše vodnik za krmiljenje znakov Unity3D, ki temelji na fiziki ustvariti model igralca z osnovnimi kontrolami.
Ko sta scena in model predvajalnika pripravljena, je čas, da dodate element uporabniškega vmesnika. Z desno miškino tipko kliknite znotraj okna hierarhije in izberite uporabniški vmesnik > Slika. To bo ustvarilo dva nova elementa v vaši hierarhiji: nadrejeni objekt Canvas in podrejeni objekt Image. Spremenite ime podrejenega predmeta v Healthbar. Z inšpektorjem izberite širino, višino in položaj za vrstico zdravja.
Dodate lahko nekoliko večjo sliko uporabniškega vmesnika z barvo, nastavljeno na črno, ki bo delovala kot ozadje/obroba za vrstico zdravja. Prepričajte se le, da je nad vrstico zdravja v hierarhiji, tako da se prikaže za njo.
Ta element uporabniškega vmesnika deluje kot osnova za vašo vrstico zdravja, vendar potrebujete tudi sprite, da ga animirate. Pojdite v podokno Projekt, kliknite z desno tipko miške in izberite Ustvari > 2D > Sprites > kvadrat.
V hierarhiji izberite Healthbar in povlecite sprite, ki ste ga pravkar ustvarili, v izbirno polje Izvorna slika znotraj inšpektorja. Lahko tudi spremenite Vrsta slike do napolnjenega, Način polnjenja na vodoravno in Izpolni izvor levo. Zdaj, če zaženete svojo igro in uporabite Količina polnjenja drsnik bi morali videti, kako se vaša vrstica zdravja krči in raste.
Če ne vidite menija komponent uporabniškega vmesnika, pojdite na Okno > Upravitelj paketovin se prepričajte, da imate nameščen paket 2D.
2. korak: Dodajte spremenljivko zdravja
Ne bi imelo smisla ustvarjati zdravstvene vrstice brez spremenljivke zdravja, ki bi narekovala njeno stanje. Drugi skripti morajo imeti možnost dostopa do te spremenljivke in smiselno jo je postaviti nekje v središče. Dodajte ga skriptu za nadzor znakov kot javno plavajoče:
javnostilebdi Zdravje igralca = 1.0f;
Uporaba plavajoče vrednosti za to spremenljivko pomeni, da lahko preprosto predstavite kateri koli odstotek od 0 do 100, da se ujema s spremenljivko Količina polnjenja slike uporabniškega vmesnika vrstice zdravja. Na primer, PlayerHealth 0,5f je 50 % širine vrstice zdravja.
3. korak: delite spremenljivke med skripti v Unity
Spremenljivke običajno delujejo znotraj svojih funkcij in skriptov. Zaradi tega so nedostopne iz drugih funkcij in skriptov, razen če naredite korake, da kodi poveste, kje naj najde spremenljivke, s katerimi želite delati.
Začnite tako, da ustvarite novo skriptno datoteko z imenom Health, v kateri bo shranjena koda. Ta skript lahko povlečete in spustite na element uporabniškega vmesnika Healthbar, ustvarjen v prvem koraku. Naslednja koda gre v funkcijo void Update().
Ta postopek se začne z iskanjem predmeta igre, ki ima v lasti spremenljivko. V tem primeru je to objekt Character_Model:
GameObject Character_Model = GameObject. Najti("Character_Model");
Nato je čas, da poiščete komponento skripta, ki vsebuje spremenljivko, s katero morate delati.
Character_Control character_Control = Character_Model. GetComponent();
In končno lahko izvlečete določeno spremenljivko, ki jo iščete. V tem primeru je to spremenljivka playerHealth, ki ste jo dodali svojemu krmilniku znakov. To dodelite plavajoči spremenljivki znotraj trenutnega skripta, imenovanega currentHealth.
currentHealth = character_Control.playerHealth;
Potrebujete le nekaj vrstic kode, da dobite spremenljivko, ki jo potrebujete, in to metodo lahko uporabite, kadar koli potrebujete dostop do igralčevega zdravja. Ko končate, bi morala biti vaša koda videti takole:
uporabo Sistem. Zbirke;
uporabo Sistem. Zbirke. generično;
uporabo UnityEngine;
uporabo UnityEngine. uporabniški vmesnik;javnostirazredzdravje: MonoBehaviour
{
javnostilebdi trenutno zdravje;prazninaZačetek()
{
}
prazninaNadgradnja()
{
GameObject Character_Model = GameObject. Najti("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
}
}
4. korak: Programirajte igralni objekt vrstice zdravja uporabniškega vmesnika
Zdaj, ko ste ustvarili element uporabniškega vmesnika vrstice zdravja in imate dostop do spremenljivke zdravja igralca, je čas, da jih pripravite do sodelovanja. Za začetek dodajte zasebno statično spremenljivko, ki bo vsebovala slikovno komponento vaše zdravstvene vrstice:
zasebnostatična Image Healthbar;
Nato lahko tej spremenljivki dodelite slikovno komponento znotraj funkcije void Start(), ki se zažene samo enkrat.
Healthbar = GetComponent();
Zdaj, ko imate vse svoje spremenljivke na mestu, lahko uporabite kodo iz prejšnjega koraka, da nastavite širino polnila predmeta uporabniškega vmesnika zdravstvene vrstice. Tukaj vam ni treba izvesti nobene pretvorbe; tako zdravje igralca kot količina zapolnitve vrstice zdravja sta plavajoči spremenljivki.
Healthbar.fillAmount = currentHealth;
S to kodo se bo vaša zdravstvena vrstica polnila gor in dol glede na spremenljivko zdravja, ki jo najdete v kodi Character_Control. To je sicer malo dolgočasno in vsekakor bi lahko šlo z nekaj barve.
Začnite z dodajanjem nove barve, da bo vrstica zdravja svetlo zelene barve, ko ima igralec veliko zdravja.
Barva zelena Zdravje = novo Barva (0,6f, 1, 0,6f, 1);
Nato dodajte stavek if, da preverite, ali je igralčevo zdravje nad 0,3f, tj. 30 % ali več. Če je višji od 0,3f, nastavite vrstico zdravja tako, da se ujema z barvo, ki ste jo pravkar dodali. Če je pod 0,3f, obrnite vrstico zdravja rdeče.
če (trenutno zdravje >= 0,3f) {
Healthbar.color = greenHealth;
} drugače {
Healthbar.color = Barva.rdeča;
}
5. korak: Testiranje kode
Kot lahko vidite iz celotne kode spodaj, je ta projekt precej preprost, ko je vse skupaj. Seveda pa potrebujete način za testiranje kode.
uporabo Sistem. Zbirke;
uporabo Sistem. Zbirke. generično;
uporabo UnityEngine;
uporabo UnityEngine. uporabniški vmesnik;javnostirazredzdravje: MonoBehaviour
{
zasebnostatična Image Healthbar;
javnostilebdi trenutno zdravje;prazninaZačetek()
{
Healthbar = GetComponent();
}prazninaNadgradnja()
{
GameObject Character_Model = GameObject. Najti("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;Barva zelena Zdravje = novo Barva (0,6f, 1, 0,6f, 1);
če (trenutno zdravje >= 0,3f) {
Healthbar.color = greenHealth;
} drugače {
Healthbar.color = Barva.rdeča;
}
}
}
Skriptu Character_Control lahko dodate eno vrstico kode, da omogočite testiranje. Kadar koli igralec pritisne tipko W, da se premakne naprej, odstrani majhno količino zdravja. Enako kodo lahko dodate kateremu koli skriptu z dostopom do spremenljivke playerHealth za enake rezultate:
Zdravje igralca -= 0,001f;
Razmislite lahko tudi o dodajanju edinstvenih sredstev svojemu projektu Unity. Ti lahko poiščite brezplačna sredstva Unity po spletu, kar vam daje priložnost, da poživite svoj projekt, ne da bi morali porabiti denar.
Gradnja vrstic zdravja v Unity3D
Vaša igra začenja dobivati obliko zdaj, ko imate vrstico zdravja za svojega lika. Čaka vas še veliko dela, vendar bi morali imeti nekaj ključnih veščin, ki jih potrebujete, da začnete resnično napredovati. Seveda pa nikoli ne škodi, če preberete več vodnikov.