Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Als pionier in enkele van 's werelds vroegste videogames, is gezondheid een veelvoorkomend mechanisme dat blijft bestaan ​​in veel van de populairste titels van vandaag. Gezondheid maakt het mogelijk om complexe vechtmechanismen te gebruiken, spelersvoortgang te creëren en je spel intuïtiever te maken. Maar hoe voeg je een gezondheidssysteem toe aan je eigen games?

Unity3D maakt het gemakkelijk om 2D UI-elementen toe te voegen aan 3D-games, dus het is een geweldige plek om voor het eerst gezondheidsbalken te verkennen.

Wat je gaat leren

Op het eerste gezicht lijkt dit project misschien niet ingewikkeld. Desondanks moet u verschillende belangrijke Unity3D-coderingsconcepten begrijpen om een ​​werkende gezondheidsbalk te maken. Dit betekent dat er genoeg te leren valt tijdens dit project, waaronder:

  • 2D UI-elementen/sprites maken in Unity3D.
  • Hoe game-objectcomponenten met code te bewerken.
  • Variabelen delen tussen scripts in Unity3D.

Stap 1: stel uw scène in

Voordat je kunt beginnen met het coderen van je gezondheidsbalk, heb je een scène nodig met een spelermodel waarop deze kan worden toegepast. Om aan de slag te gaan, kunt u onze volgen op fysica gebaseerde Unity3D-karaktercontrollergids om een ​​spelermodel te maken met basisbedieningen.

Met een scène- en spelermodel is het tijd om een ​​UI-element toe te voegen. Klik met de rechtermuisknop in het hiërarchievenster en selecteer gebruikersinterface > Afbeelding. Hierdoor worden twee nieuwe items in uw hiërarchie gemaakt: een bovenliggend Canvas-object en een onderliggend afbeeldingsobject. Wijzig de naam van het onderliggende object in Healthbar. Kies een breedte, hoogte en positie voor uw gezondheidsbalk met behulp van de inspecteur.

U kunt een iets grotere UI-afbeelding toevoegen waarvan de kleur is ingesteld op zwart om als achtergrond/rand voor de gezondheidsbalk te dienen. Zorg ervoor dat het zich boven de gezondheidsbalk in de hiërarchie bevindt, zodat het erachter wordt weergegeven.

Dit UI-element werkt als de basis voor je gezondheidsbalk, maar je hebt ook een sprite nodig om deze te animeren. Ga naar het deelvenster Project, klik met de rechtermuisknop en selecteer Creëren > 2D > Sprieten > Vierkant.

Selecteer de Gezondheidsbalk in de hiërarchie en sleep de sprite die u zojuist hebt gemaakt naar het selectievak Bronafbeelding in de inspecteur. Je kunt ook veranderen Beeldtype te vullen, Vul methode naar Horizontaal, en Vul Oorsprong in naar links. Als je nu je spel uitvoert en de Vul bedrag in schuifregelaar zou je je gezondheidsbalk moeten zien krimpen en groeien.

Als u het UI-componentmenu niet kunt zien, gaat u naar Venster > Pakketbeheeren zorg ervoor dat u het 2D-pakket hebt geïnstalleerd.

Stap 2: voeg een gezondheidsvariabele toe

Het zou niet veel zin hebben om een ​​gezondheidsbalk te maken zonder een gezondheidsvariabele om de status ervan te dicteren. Andere scripts moeten toegang hebben tot deze variabele en het is logisch om deze ergens centraal te plaatsen. Voeg het toe aan het Character Control-script als een openbare float:

openbaarvlot spelerGezondheid = 1.0f;

Het gebruik van een vlotter voor deze variabele betekent dat u eenvoudig elk percentage van 0 tot 100 kunt weergeven, om overeen te komen met de UI-afbeelding van de gezondheidsbalk. Vul de variabele Hoeveelheid in. Een spelerGezondheid van 0,5f is bijvoorbeeld 50% van de breedte van de gezondheidsbalk.

Stap 3: deel variabelen tussen scripts in eenheid

Variabelen werken meestal binnen hun eigen functies en scripts. Dit maakt ze ontoegankelijk vanuit andere functies en scripts, tenzij u stappen onderneemt om de code te vertellen waar de variabelen te vinden zijn waarmee u wilt werken.

Begin met het maken van een nieuw scriptbestand met de naam Health om de code in op te slaan. U kunt dit script slepen en neerzetten op het Healthbar UI-element dat in de eerste stap is gemaakt. De volgende code gaat naar de functie void Update().

Dit proces begint met het vinden van het spelobject dat eigenaar is van de variabele. In dit geval is het het object Character_Model:

GameObject Character_Model = GameObject. Vinden("Character_Model");

Vervolgens is het tijd om de scriptcomponent te vinden die de variabele bevat waarmee u moet werken.

Character_Control character_Control = Character_Model. GetComponent();

En tot slot kunt u de specifieke variabele extraheren waarnaar u op zoek bent. In dit geval is het de playerHealth-variabele die je aan je personagecontroller hebt toegevoegd. Wijs dit toe aan een float-variabele binnen het huidige script met de naam currentHealth.

currentHealth = character_Control.playerHealth;

Er zijn maar een paar regels code nodig om de variabele te krijgen die je nodig hebt, en je kunt deze methode toepassen wanneer je toegang nodig hebt tot de gezondheid van je speler. Uw code zou er als volgt uit moeten zien als u klaar bent:

gebruik makend van Systeem. Collecties;
gebruik makend van Systeem. Collecties. Algemeen;
gebruik makend van EenheidMotor;
gebruik makend van Unity Engine. gebruikersinterface;

openbaarklasGezondheid: MonoGedrag
{
openbaarvlot huidigeGezondheid;

leegteBegin()
{
}

leegteUpdate()
{
GameObject Character_Model = GameObject. Vinden("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
}
}

Stap 4: Programmeer het UI Health Bar Game-object

Nu je een UI-element voor de gezondheidsbalk hebt gemaakt en toegang hebt tot de gezondheidsvariabele van de speler, is het tijd om ze samen te laten werken. Voeg om te beginnen een persoonlijke statische variabele toe die de afbeeldingscomponent van uw gezondheidsbalk zal bevatten:

privaatstatisch Afbeelding Gezondheidsbalk;

U kunt vervolgens de afbeeldingscomponent toewijzen aan deze variabele binnen de functie void Start(), die maar één keer wordt uitgevoerd.

Gezondheidsbalk = GetComponent();

Nu u al uw variabelen hebt ingevoerd, kunt u de code uit de vorige stap gebruiken om de vulbreedte van het UI-object van de gezondheidsbalk in te stellen. U hoeft hier geen conversie uit te voeren; zowel de gezondheid van de speler als het vulbedrag van de gezondheidsbalk zijn zwevende variabelen.

Healthbar.fillAmount = huidigeGezondheid;

Met deze code wordt je gezondheidsbalk op en neer gevuld op basis van de gezondheidsvariabele in de Character_Control-code. Dit is echter een beetje saai, en het zou zeker wat kleur kunnen gebruiken.

Begin met het toevoegen van een nieuwe kleur om de gezondheidsbalk lichtgroen te maken wanneer de speler veel gezondheid heeft.

Kleur groenGezondheid = nieuw Kleur(0.6f, 1, 0.6f, 1);

Voeg vervolgens een if-statement toe om te controleren of de gezondheid van de speler hoger is dan 0,3f, d.w.z. 30% of meer. Als het hoger is dan 0,3 f, stelt u de gezondheidsbalk in op de kleur die u zojuist hebt toegevoegd. Als het lager is dan 0,3 f, wordt de gezondheidsbalk rood.

als (huidigeGezondheid >= 0.3f) {
Gezondheidsbalk.kleur = groenGezondheid;
} anders {
Gezondheidsbalk.kleur = Kleur.rood;
}

Stap 5: de code testen

Zoals je kunt zien aan de hand van de volledige code hieronder, is dit project vrij eenvoudig als het allemaal samen is. Je hebt natuurlijk wel een manier nodig om je code te testen.

gebruik makend van Systeem. Collecties;
gebruik makend van Systeem. Collecties. Algemeen;
gebruik makend van EenheidMotor;
gebruik makend van Unity Engine. gebruikersinterface;

openbaarklasGezondheid: MonoGedrag
{
privaatstatisch Afbeelding Gezondheidsbalk;
openbaarvlot huidigeGezondheid;

leegteBegin()
{
Gezondheidsbalk = GetComponent();
}

leegteUpdate()
{
GameObject Character_Model = GameObject. Vinden("Character_Model");
Character_Control character_Control = Character_Model. GetComponent();
currentHealth = character_Control.playerHealth;
Healthbar.fillAmount = huidigeGezondheid;

Kleur groenGezondheid = nieuw Kleur(0.6f, 1, 0.6f, 1);

als (huidigeGezondheid >= 0.3f) {
Gezondheidsbalk.kleur = groenGezondheid;
} anders {
Gezondheidsbalk.kleur = Kleur.rood;
}
}
}

U kunt een enkele regel code toevoegen aan het Character_Control-script om testen mogelijk te maken. Telkens wanneer de speler op de W-toets drukt om vooruit te gaan, verwijdert u een kleine hoeveelheid gezondheid. U kunt dezelfde code toevoegen aan elk script met toegang tot de playerHealth-variabele voor dezelfde resultaten:

spelerGezondheid -= 0.001f;

U kunt ook overwegen om unieke middelen toe te voegen aan uw Unity-project. Jij kan vind gratis Unity-middelen op internet, zodat u uw project kunt verlevendigen zonder geld uit te geven.

Gezondheidsbalken bouwen in Unity3D

Je spel begint vorm te krijgen nu je een gezondheidsbalk hebt voor je personage. Er is nog veel werk aan de winkel, maar je zou nu enkele van de belangrijkste vaardigheden moeten hebben die je nodig hebt om echte vooruitgang te boeken. Het kan natuurlijk nooit kwaad om meer handleidingen te lezen.