Helse er en pioner innen noen av verdens tidligste videospill, og er en vanlig mekaniker som vedvarer i mange av dagens mest populære titler. Helse gjør det mulig å bruke kompleks kampmekanikk, skape spillerprogresjon og gjøre spillet ditt mer intuitivt. Men hvordan legger du et helsesystem til dine egne spill?
Unity3D gjør det enkelt å legge til 2D UI-elementer i 3D-spill, så det er et flott sted å begynne å utforske helsebarer for første gang.
Hva du vil lære
På overflaten virker kanskje ikke dette prosjektet komplisert. Til tross for dette, må du forstå flere viktige Unity3D-kodingskonsepter for å lage en fungerende helselinje. Dette betyr at det er mye å lære mens du går gjennom dette prosjektet, inkludert:
- Hvordan lage 2D UI-elementer/sprites i Unity3D.
- Hvordan redigere spillobjektkomponenter med kode.
- Hvordan dele variabler mellom skript i Unity3D.
Trinn 1: Sett opp scenen din
Før du kan begynne å kode helselinjen din, trenger du en scene med en spillermodell som den kan brukes på. For å komme i gang kan du følge vår fysikkbasert Unity3D-tegnkontrollerveiledning å lage en spillermodell med grunnleggende kontroller.
Med en scene og spillermodell på plass, er det på tide å legge til et UI-element. Høyreklikk inne i Hierarki-vinduet og velg UI > Bilde. Dette vil opprette to nye elementer i hierarkiet ditt: et Canvas-overordnet objekt og et underordnet bildeobjekt. Endre navnet på det underordnede objektet til Healthbar. Velg en bredde, høyde og posisjon for helsestangen din ved hjelp av inspektøren.
Du kan legge til et litt større UI-bilde med fargen satt til svart for å fungere som bakgrunn/kantlinje for helselinjen. Bare sørg for at den er over helselinjen i hierarkiet slik at den vises bak den.
Dette UI-elementet fungerer som grunnlaget for helselinjen din, men du trenger også en sprite på plass for å animere den. Gå til prosjektruten, høyreklikk og velg Skape > 2D > Sprites > Torget.
Velg Healthbar fra hierarkiet og dra spriten du nettopp opprettet inn i kildebildevalgboksen inne i inspektøren. Du kan også endre Bildetype å fylt, Fyllmetode til Horisontal, og Fyll opprinnelse til venstre. Nå hvis du kjører spillet ditt og bruker Fyllingsmengde skyveknappen bør du se helsestangen din krympe og vokse.
Hvis du ikke kan se UI-komponentmenyen, gå til Vindu > Pakkebehandling, og sørg for at du har installert 2D-pakken.
Trinn 2: Legg til en helsevariabel
Det ville ikke være mye vits i å lage en helsebar uten en helsevariabel på plass for å diktere dens tilstand. Andre skript må ha tilgang til denne variabelen, og det er fornuftig å plassere den et sentralt sted. Legg det til Character Control-skriptet som en offentlig flytende:
offentligflyte spillerhelse = 1.0f;
Å bruke en flytende for denne variabelen betyr at du enkelt kan representere en hvilken som helst prosentandel fra 0 til 100, for å matche helselinjens UI-bilde Fill Amount-variabelen. For eksempel er en spillerhelse på 0,5f 50 % av helselinjens bredde.
Trinn 3: Del variabler mellom skript i Unity
Variabler opererer vanligvis innenfor sine egne funksjoner og skript. Dette gjør dem utilgjengelige fra andre funksjoner og skript med mindre du tar skritt for å fortelle koden hvor den skal finne variablene du vil jobbe med.
Start med å lage en ny skriptfil kalt Health for å inneholde koden. Du kan dra og slippe dette skriptet til Healthbar UI-elementet som ble opprettet i det første trinnet. Følgende kode går inn i void Update()-funksjonen.
Denne prosessen starter med å finne spillobjektet som eier variabelen. I dette tilfellet er det Character_Model-objektet:
GameObject Character_Model = GameObject. Finne("Character_Model");
Deretter er det på tide å finne skriptkomponenten som inneholder variabelen du trenger å jobbe med.
Character_Control character_Control = Character_Model. GetComponent();
Og til slutt kan du trekke ut den spesifikke variabelen du leter etter. I dette tilfellet er det playerHealth-variabelen du la til karakterkontrolleren din. Tilordne dette til en flytevariabel i det gjeldende skriptet kalt currentHealth.
currentHealth = character_Control.playerHealth;
Det tar bare noen få linjer med kode for å få variabelen du trenger, og du kan bruke denne metoden når du trenger å få tilgang til spillerens helse. Koden din skal se slik ut når du er ferdig:
ved hjelp av System. Samlinger;
ved hjelp av System. Samlinger. Generisk;
ved hjelp av UnityEngine;
ved hjelp av UnityEngine. UI;offentligklasseHelse: MonoBehaviour
{
offentligflyte gjeldende helse;tomromStart()
{
}
tomromOppdater()
{
GameObject Character_Model = GameObject. Finne("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Trinn 4: Programmer UI Health Bar Game Object
Nå som du har opprettet et brukergrensesnittelement for helselinjen og har tilgang til spillerhelsevariabelen, er det på tide å få dem til å fungere sammen. For å starte, legg til en privat statisk variabel som vil inneholde bildekomponenten til helselinjen din:
privatstatisk Bilde Healthbar;
Du kan deretter tilordne bildekomponenten til denne variabelen i void Start()-funksjonen, som bare kjører én gang.
Healthbar = GetComponent();
Nå som du har alle variablene dine på plass, kan du bruke koden fra forrige trinn til å angi fyllbredden til helselinjens UI-objekt. Du trenger ikke utføre noen konvertering her; både spillerhelsen og fyllmengden for helsestangen er flytevariabler.
Healthbar.fillAmount = currentHealth;
Med denne koden på plass, vil helselinjen fylles opp og ned basert på helsevariabelen som finnes i Character_Control-koden. Dette er imidlertid litt kjedelig, og det kan definitivt gjøres med litt farge.
Start med å legge til en ny farge for å gjøre helselinjen til en lysegrønn farge når spilleren har mye helse.
Farge grønnHelse = ny Farge(0,6f, 1, 0,6f, 1);
Deretter legger du til en if-setning for å sjekke om spillerens helse er over 0,3f, dvs. 30 % eller mer. Hvis den er høyere enn 0,3f, setter du helselinjen til å matche fargen du nettopp la til. Hvis den er under 0,3f, gjør du helselinjen rød.
hvis (nåværende helse >= 0,3f) {
Healthbar.color = greenHealth;
} ellers {
Healthbar.color = Color.red;
}
Trinn 5: Testing av koden
Som du kan se fra den komplette koden nedenfor, er dette prosjektet ganske enkelt når alt er samlet. Selvfølgelig trenger du en måte å teste koden din på.
ved hjelp av System. Samlinger;
ved hjelp av System. Samlinger. Generisk;
ved hjelp av UnityEngine;
ved hjelp av UnityEngine. UI;offentligklasseHelse: MonoBehaviour
{
privatstatisk Bilde Healthbar;
offentligflyte gjeldende helse;tomromStart()
{
Healthbar = GetComponent();
}tomromOppdater()
{
GameObject Character_Model = GameObject. Finne("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;Farge grønnHelse = ny Farge(0,6f, 1, 0,6f, 1);
hvis (nåværende helse >= 0,3f) {
Healthbar.color = greenHealth;
} ellers {
Healthbar.color = Color.red;
}
}
}
Du kan legge til en enkelt kodelinje i Character_Control-skriptet for å gjøre testing mulig. Når spilleren trykker på W-tasten for å gå fremover, fjern en liten mengde helse. Du kan legge til den samme koden til et hvilket som helst skript med tilgang til playerHealth-variabelen for de samme resultatene:
spillerhelse -= 0,001f;
Du kan også vurdere å legge til unike eiendeler til Unity-prosjektet ditt. Du kan finne gratis Unity-eiendeler på nettet, noe som gir deg sjansen til å live opp prosjektet ditt uten å måtte bruke penger.
Bygge helsebarer i Unity3D
Spillet ditt begynner å ta form nå som du har en helsebar på plass for karakteren din. Det er fortsatt mye arbeid å gjøre, men du bør nå ha noen av nøkkelferdighetene du trenger for å begynne å gjøre virkelige fremskritt. Selvfølgelig skader det aldri å lese flere guider.