Pioner inden for nogle af verdens tidligste videospil, sundhed er en almindelig mekaniker, der fortsætter i mange af nutidens mest populære titler. Sundhed gør det muligt at anvende kompleks kampmekanik, skabe spillerprogression og gøre dit spil mere intuitivt. Men hvordan tilføjer du et sundhedssystem til dine egne spil?
Unity3D gør det nemt at tilføje 2D UI-elementer til 3D-spil, så det er et godt sted at begynde at udforske sundhedsbarer for første gang.
Hvad du vil lære
På overfladen virker dette projekt måske ikke kompliceret. På trods af dette skal du forstå flere centrale Unity3D-kodningskoncepter for at skabe en fungerende sundhedsbar. Det betyder, at der er masser at lære, mens du gennemgår dette projekt, herunder:
- Sådan opretter du 2D UI-elementer/sprites i Unity3D.
- Sådan redigeres spilobjektkomponenter med kode.
- Sådan deler du variabler mellem scripts i Unity3D.
Trin 1: Konfigurer din scene
Før du kan begynde at kode din sundhedsbjælke, skal du bruge en scene med en afspillermodel, som den kan anvendes til. For at komme i gang kan du følge vores fysikbaseret Unity3D-tegncontrollerguide at skabe en spillermodel med grundlæggende kontroller.
Med en scene og en afspillermodel på plads, er det tid til at tilføje et UI-element. Højreklik inde i Hierarki-vinduet og vælg UI > Billede. Dette vil oprette to nye elementer i dit hierarki: et Canvas-overordnet objekt og et billedunderordnet objekt. Skift navnet på det underordnede objekt til Healthbar. Vælg en bredde, højde og position til din sundhedsstang ved hjælp af inspektøren.
Du kan tilføje et lidt større brugergrænsefladebillede med dets farve sat til sort for at fungere som baggrund/kant til sundhedsbjælken. Bare sørg for, at den er over sundhedsbjælken i hierarkiet, så den vises bagved.
Dette UI-element fungerer som grundlaget for din sundhedsbar, men du skal også have en sprite på plads for at animere den. Gå til projektruden, højreklik og vælg skab > 2D > Sprites > Firkant.
Vælg Healthbar fra hierarkiet, og træk den sprite, du lige har oprettet, ind i feltet til valg af kildebillede inde i inspektøren. Du kan også ændre Billedtype at fylde, Fyldningsmetode til Vandret, og Udfyld oprindelse til venstre. Hvis du nu kører dit spil og bruger Påfyldningsmængde skyderen bør du se din sundhedsbar krympe og vokse.
Hvis du ikke kan se UI-komponentmenuen, skal du gå til Vindue > Pakkehåndtering, og sørg for, at du har 2D-pakken installeret.
Trin 2: Tilføj en sundhedsvariabel
Der ville ikke være meget mening i at oprette en sundhedsbar uden en sundhedsvariabel på plads til at diktere dens tilstand. Andre scripts skal have adgang til denne variabel, og det giver mening at placere den et centralt sted. Føj det til Character Control-scriptet som en offentlig flyder:
offentligflyde spillersundhed = 1.0f;
Brug af en float for denne variabel betyder, at du nemt kan repræsentere en hvilken som helst procentdel fra 0 til 100, for at matche sundhedsbjælkens UI-billede Fill Amount-variablen. For eksempel er en playerHealth på 0,5f 50% af sundhedsbjælkens bredde.
Trin 3: Del variabler mellem scripts i Unity
Variabler fungerer normalt inden for deres egne funktioner og scripts. Dette gør dem utilgængelige fra andre funktioner og scripts, medmindre du tager skridt til at fortælle koden, hvor den skal finde de variabler, du vil arbejde med.
Start med at oprette en ny scriptfil kaldet Health til at rumme koden. Du kan trække og slippe dette script til Healthbar UI-elementet oprettet i det første trin. Følgende kode går ind i void Update()-funktionen.
Denne proces starter med at finde det spilobjekt, der ejer variablen. I dette tilfælde er det Character_Model-objektet:
GameObject Character_Model = GameObject. Find("Character_Model");
Dernæst er det tid til at finde den script-komponent, der indeholder den variabel, du skal arbejde med.
Character_Control character_Control = Character_Model. GetComponent();
Og endelig kan du udtrække den specifikke variabel, du leder efter. I dette tilfælde er det playerHealth-variablen, du føjede til din karaktercontroller. Tildel dette til en flydende variabel i det aktuelle script kaldet currentHealth.
currentHealth = character_Control.playerHealth;
Det kræver kun et par linjer kode at få den variabel, du har brug for, og du kan anvende denne metode, når du har brug for at få adgang til din spillers helbred. Din kode skal se sådan ud, når du er færdig:
ved brug af System. Samlinger;
ved brug af System. Samlinger. Generisk;
ved brug af UnityEngine;
ved brug af UnityEngine. UI;offentligklasseSundhed: Monoadfærd
{
offentligflyde nuværende sundhed;ugyldigStart()
{
}
ugyldigOpdatering()
{
GameObject Character_Model = GameObject. Find("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
}
}
Trin 4: Programmer UI Health Bar Game Object
Nu hvor du har oprettet et sundhedsbjælke-UI-element og har adgang til spillersundhedsvariablen, er det tid til at få dem til at arbejde sammen. For at starte skal du tilføje en privat statisk variabel, der vil indeholde billedkomponenten i din sundhedsbjælke:
privatstatisk Billede Healthbar;
Du kan derefter tildele billedkomponenten til denne variabel i void Start()-funktionen, som kun kører én gang.
Healthbar = GetComponent();
Nu hvor du har alle dine variabler på plads, kan du bruge koden fra det forrige trin til at indstille udfyldningsbredden for sundhedsbjælkens UI-objekt. Du behøver ikke at udføre nogen konvertering her; både spillerens sundhed og sundhedsbjælkens fyldmængde er flydende variabler.
Healthbar.fillAmount = currentHealth;
Med denne kode på plads vil din sundhedsbjælke fylde op og ned baseret på sundhedsvariablen, der findes i Character_Control-koden. Dette er dog lidt kedeligt, og det kunne helt sikkert gøres med noget farve.
Start med at tilføje en ny farve for at gøre sundhedsbjælken til en lysegrøn farve, når spilleren har meget sundhed.
Farve grønHealth = ny Farve(0,6f, 1, 0,6f, 1);
Tilføj derefter en if-erklæring for at kontrollere, om spillerens helbred er over 0,3f, dvs. 30 % eller mere. Hvis den er højere end 0,3f, skal du indstille sundhedsbjælken til at matche den farve, du lige har tilføjet. Hvis den er under 0,3f, drej sundhedsbjælken til rød.
hvis (nuværende Sundhed >= 0,3f) {
Healthbar.color = greenHealth;
} andet {
Healthbar.color = Color.red;
}
Trin 5: Test af koden
Som du kan se fra den komplette kode nedenfor, er dette projekt ret simpelt, når det hele er samlet. Selvfølgelig har du dog brug for en måde at teste din kode på.
ved brug af System. Samlinger;
ved brug af System. Samlinger. Generisk;
ved brug af UnityEngine;
ved brug af UnityEngine. UI;offentligklasseSundhed: Monoadfærd
{
privatstatisk Billede Healthbar;
offentligflyde nuværende sundhed;ugyldigStart()
{
Healthbar = GetComponent();
}ugyldigOpdatering()
{
GameObject Character_Model = GameObject. Find("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = currentHealth;Farve grønHealth = ny Farve(0,6f, 1, 0,6f, 1);
hvis (nuværende Sundhed >= 0,3f) {
Healthbar.color = greenHealth;
} andet {
Healthbar.color = Color.red;
}
}
}
Du kan tilføje en enkelt kodelinje til Character_Control-scriptet for at gøre test mulig. Når afspilleren trykker på W-tasten for at bevæge sig fremad, skal du fjerne en lille smule helbred. Du kan tilføje den samme kode til ethvert script med adgang til playerHealth-variablen for de samme resultater:
playerHealth -= 0,001f;
Du kan også overveje at tilføje unikke aktiver til dit Unity-projekt. Du kan finde gratis Unity-aktiver på tværs af nettet, hvilket giver dig chancen for at sætte liv i dit projekt uden at skulle bruge penge.
Opbygning af sundhedsbarer i Unity3D
Dit spil begynder at tage form nu, hvor du har en sundhedsbar på plads til din karakter. Der er stadig meget arbejde at gøre, men du burde nu have nogle af de nøglefærdigheder, du skal bruge for at begynde at gøre reelle fremskridt. Selvfølgelig skader det dog aldrig at læse flere guides.