A világ legkorábbi videojátékainak úttörőjeként az egészség olyan gyakori mechanika, amely napjaink legnépszerűbb játékaiban is megmarad. Az egészség lehetővé teszi az összetett harci mechanika alkalmazását, a játékosok előrehaladásának létrehozását és a játék intuitívabbá tételét. De hogyan adj hozzá egészségügyi rendszert a saját játékaidhoz?
A Unity3D megkönnyíti a 2D-s felhasználói felület elemeinek hozzáadását a 3D-s játékokhoz, így ez egy nagyszerű hely az egészségsávok első felfedezésének megkezdéséhez.
Mit fog tanulni
A felszínen ez a projekt nem tűnik bonyolultnak. Ennek ellenére meg kell értenie néhány kulcsfontosságú Unity3D kódolási koncepciót egy működő állapotsáv létrehozásához. Ez azt jelenti, hogy rengeteg tanulnivaló van a projekt során, többek között:
- 2D UI-elemek/sprite-ok létrehozása a Unity3D-ben.
- Játékobjektum-összetevők kóddal történő szerkesztése.
- A változók megosztása a szkriptek között a Unity3D-ben.
1. lépés: Állítsa be a jelenetet
Mielőtt elkezdené az állapotsáv kódolását, szüksége van egy jelenetre egy játékos modellel, amelyre alkalmazható. A kezdéshez kövesse a mi oldalunkat fizikai alapú Unity3D karaktervezérlő útmutató alapvető kezelőszervekkel rendelkező játékosmodellt létrehozni.
A jelenet és a lejátszómodell a helyén van, ideje hozzáadni egy UI elemet. Kattintson a jobb gombbal a Hierarchia ablakban, és válassza ki UI > Kép. Ez két új elemet hoz létre a hierarchiában: egy Canvas szülőobjektumot és egy Image utódobjektumot. Módosítsa a gyermekobjektum nevét Healthbar-ra. Válassza ki az állapotsáv szélességét, magasságát és helyzetét az ellenőrrel.
Hozzáadhat egy kicsit nagyobb felhasználói felületképet, amelynek színe feketére van állítva, hogy az állapotsáv háttereként/szegélyeként működjön. Csak győződjön meg arról, hogy az állapotsáv felett van a hierarchiában, hogy mögötte jelenjen meg.
Ez a felhasználói felület elem az állapotsáv alapjaként működik, de szükség van egy sprite-re is az animációhoz. Lépjen a Projekt ablaktáblára, kattintson a jobb gombbal, és válassza ki Teremt > 2D > Sprite > Négyzet.
Válassza ki a Healthbart a hierarchiából, és húzza az imént létrehozott sprite-ot a Forráskép kijelölőmezőjébe az ellenőrben. Változtatni is lehet Képtípus tele, Kitöltési módszer vízszintesre, és Töltse ki az Eredet balra. Most, ha futtatja a játékot, és használja a Kitöltési mennyiség csúszka, akkor látnia kell, hogy az egészségi sáv zsugorodik és nő.
Ha nem látja a felhasználói felület összetevő menüjét, lépjen a következőre: Ablak > Csomagkezelő, és győződjön meg arról, hogy a 2D csomag telepítve van.
2. lépés: Adjon hozzá állapotváltozót
Nem sok értelme lenne egy állapotsávot létrehozni anélkül, hogy egy állapotváltozó nem diktálná az állapotát. Más szkripteknek hozzá kell tudniuk férni ehhez a változóhoz, és célszerű valahova központi helyre tenni. Adja hozzá a karaktervezérlő szkripthez nyilvános lebegésként:
nyilvánosúszó playerHealth = 1.0f;
Ha ehhez a változóhoz lebegőpontot használ, könnyedén megadhat bármilyen százalékot 0 és 100 között, hogy megfeleljen az állapotsáv UI képének kitöltési mennyisége változójának. Például a 0,5f-es playerHealth az állapotsáv szélességének 50%-a.
3. lépés: Ossza meg a változókat a szkriptek között a Unity alkalmazásban
A változók általában a saját függvényeiken és szkripteiken belül működnek. Ez elérhetetlenné teszi őket más függvényekből és szkriptekből, hacsak nem tesz lépéseket annak érdekében, hogy megmondja a kódnak, hogy hol találja meg azokat a változókat, amelyekkel dolgozni szeretne.
Kezdje egy új, Health nevű szkriptfájl létrehozásával, amely tartalmazza a kódot. Ezt a szkriptet áthúzhatja az első lépésben létrehozott Healthbar UI elemre. A következő kód a void Update() függvénybe kerül.
Ez a folyamat a változót birtokló játékobjektum megtalálásával kezdődik. Ebben az esetben ez a Character_Model objektum:
GameObject Character_Model = GameObject. Megtalálja("Karakter_modell");
Ezután itt az ideje, hogy megtalálja azt a szkript-összetevőt, amely tartalmazza azt a változót, amellyel dolgoznia kell.
Character_Control character_Control = Karakter_modell. GetComponent();
Végül pedig kibonthatja a keresett változót. Ebben az esetben ez a playerHealth változó, amelyet hozzáadtál a karaktervezérlődhez. Rendelje hozzá ezt a lebegő változóhoz az aktuális szkripten belül, a currentHealth néven.
currentHealth = character_Control.playerHealth;
Csak néhány sornyi kódra van szükség ahhoz, hogy megkapja a szükséges változót, és ezt a módszert bármikor alkalmazhatja, amikor hozzá kell férnie a játékos állapotához. A kódnak így kell kinéznie, ha végzett:
segítségével Rendszer. Gyűjtemények;
segítségével Rendszer. Gyűjtemények. Generikus;
segítségével UnityEngine;
segítségével UnityEngine. UI;nyilvánososztályEgészség: MonoBehaviour
{
nyilvánosúszó jelenlegiHealth;üresRajt()
{
}
üresFrissítés()
{
GameObject Character_Model = GameObject. Megtalálja("Karakter_modell");
Character_Control character_Control = Karakter_modell. GetComponent();
currentHealth = character_Control.playerHealth;
}
}
4. lépés: Programozza be az UI Health Bar Game Object-et
Most, hogy létrehoztál egy állapotsáv UI elemet, és hozzáférhetsz a játékos állapotváltozójához, itt az ideje, hogy együttműködjenek. Kezdésként adjon hozzá egy privát statikus változót, amely tartalmazza az állapotsáv képösszetevőjét:
magánstatikus Image Healthbar;
Ezután hozzárendelheti a képkomponenst ehhez a változóhoz a void Start() függvényen belül, amely csak egyszer fut le.
Healthbar = GetComponent();
Most, hogy az összes változó a helyén van, az előző lépés kódjával beállíthatja az állapotsáv UI objektum kitöltési szélességét. Itt nem kell semmilyen átalakítást végrehajtania; mind a játékos állapota, mind az állapotsáv kitöltési mennyisége lebegő változók.
Healthbar.fillAmount = currentHealth;
Ha ezt a kódot használja, az állapotsáv a Character_Control kódban található állapotváltozó alapján felfelé és lefelé töltődik. Ez azonban egy kicsit unalmas, és határozottan megéri néhány színt.
Kezdje új szín hozzáadásával, hogy az egészségjelző sáv világoszöld színű legyen, ha a játékos sok egészséggel rendelkezik.
Szín zöldEgészség = új Szín(0.6f, 1, 0.6f, 1);
Ezután adjon hozzá egy if utasítást, hogy ellenőrizze, hogy a játékos egészségi állapota 0,3 f felett van-e, azaz 30% vagy több. Ha nagyobb, mint 0,3 f, állítsa be az állapotsávot az imént hozzáadott színhez. Ha 0,3 f alatt van, fordítsa pirosra az állapotjelző sávot.
ha (currentHealth >= 0.3f) {
Healthbar.color = zöldEgészség;
} más {
Healthbar.color = Color.red;
}
5. lépés: A kód tesztelése
Amint az alábbi teljes kódból látható, ez a projekt meglehetősen egyszerű, ha mindez együtt van. Természetesen szükség van egy módra a kód tesztelésére.
segítségével Rendszer. Gyűjtemények;
segítségével Rendszer. Gyűjtemények. Generikus;
segítségével UnityEngine;
segítségével UnityEngine. UI;nyilvánososztályEgészség: MonoBehaviour
{
magánstatikus Image Healthbar;
nyilvánosúszó jelenlegiHealth;üresRajt()
{
Healthbar = GetComponent();
}üresFrissítés()
{
GameObject Character_Model = GameObject. Megtalálja("Karakter_modell");
Character_Control character_Control = Karakter_modell. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;Szín zöldEgészség = új Szín(0.6f, 1, 0.6f, 1);
ha (currentHealth >= 0.3f) {
Healthbar.color = zöldEgészség;
} más {
Healthbar.color = Color.red;
}
}
}
A tesztelés lehetővé tétele érdekében egyetlen kódsort is hozzáadhat a Character_Control parancsfájlhoz. Amikor a játékos megnyomja a W gombot az előrelépéshez, távolítson el egy kis életerőt. Ugyanazt a kódot bármely olyan szkripthez hozzáadhatja, amely hozzáféréssel rendelkezik a playerHealth változóhoz, ugyanazokkal az eredményekkel:
playerHealth -= 0,001f;
Azt is megfontolhatja, hogy egyedi eszközöket ad hozzá Unity-projektjéhez. tudsz szabad Unity-eszközöket találni az interneten, lehetőséget adva arra, hogy pénzköltés nélkül élénkítse fel projektjét.
Egészségügyi bárok építése a Unity3D-ben
A játékod most kezd formát ölteni, amikor már van egy egészségügyi sáv a karaktered számára. Még sok a tennivaló, de most már rendelkeznie kell néhány olyan kulcsfontosságú készséggel, amelyre szüksége van a valódi fejlődés megkezdéséhez. Természetesen soha nem árt több útmutatót elolvasni.