Paski zdrowia
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 10 z 56.
Pasek, który się opróżnia, to obraz interfejsu użytkownika z ustawionym typem Image Type na Filled. To ustawienie pojawia się, gdy obraz ma przypisany Source Image; gdy jest ustawione na None, Inspector je ukrywa. Metoda Fill Method ustawiona na Horizontal i Fill Origin ustawione na Left sprawiają, że pasek kurczy się w kierunku lewego końca, a fillAmount, od 0 do 1, określa, jaka jego część jest rysowana. Ciemny obraz pod nim pokazuje pustą część. Unity ogranicza wartość fillAmount, więc 1.4 rysuje pełny pasek, a -0.2 pusty.
fillAmount to pozostała część zdrowia: zdrowie podzielone przez jego maksimum. W przypadku pól int jest to dzielenie całkowite, a 350 / 500 daje 0, więc najpierw rzutuj jedną ze stron na float. Image znajduje się w UnityEngine.UI. Ten pasek bossa jest aktualizowany po każdym trafieniu:
public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;
public void Hit(int damage)
{
bossHp = Mathf.Max(bossHp - damage, 0);
bossBar.fillAmount = (float)bossHp / bossMaxHp; // 350 / 500 = 0.7
}Kolor paska również może zależeć od poziomu zdrowia: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); jest zielony, gdy pasek jest pełny, i staje się czerwony w miarę jego opróżniania.
Wyzwanie
ŁatwyRycerka ma tarczę, która pochłania obrażenia, zanim zaczną ubywać jej punkty zdrowia. Strzałkami porusza nią (Mover.cs), a kolce zadają jej 30 obrażeń, gdy na nie nadepnie (Spikes.cs). Napisz Knight.cs; w scenie są podpięte healthBar i shieldBar, które są w niej puste:
hpzaczyna od wartościmaxHp(80), ashieldod wartościmaxShield(40); oba paski zaczynają się jako pełne.TakeDamage(int amount): tarcza pochłania tyle obrażeń, ile może, a pozostała część odejmowana jest odhp, które nigdy nie spada poniżej 0.- Po każdym trafieniu oba paski pokazują pozostałą wartość:
shieldBarpokazuje tarczę w stosunku domaxShield, ahealthBar— hp w stosunku domaxHp.
Naciśnij Play, kilka razy wejdź na kolce, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.UI;
public class Knight : MonoBehaviour
{
public Image healthBar;
public Image shieldBar;
public int maxHp = 80;
public int maxShield = 40;
private int hp;
private int shield;
void Start()
{
hp = maxHp;
shield = maxShield;
// Wypełnij oba paski
}
public void TakeDamage(int amount)
{
// Tarcza przyjmuje tyle obrażeń, ile może; reszta zmniejsza hp, ale nie poniżej 0. Następnie wyświetl oba paski.
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Tworzenie prawdziwych gier
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz4Sceny i poziomy
Wczytaj scenęUruchom poziom ponownieNastępny poziomZachowaj między scenamiPodsumowanie: wybór poziomu10Projekt: platformówka 3D
TrasaRuchome platformy2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w banku