Can Çubukları
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 10 / 56.
Azalan bir çubuk, Image Type ayarı Filled olarak belirlenmiş bir UI Image'dır. Bu ayar, Image'a bir Source Image atandıktan sonra görünür; None seçiliyken Inspector bu ayarı gizler. Fill Method Horizontal ve Fill Origin Left olduğunda çubuk sol ucuna doğru kısalır; fillAmount, 0 ile 1 arasında, ne kadarının çizileceğini belirler. Arkasındaki koyu renkli bir Image boş kısmı gösterir. Unity, fillAmount değerini sınırlar; bu nedenle 1.4 tam bir çubuk, -0.2 ise boş bir çubuk çizer.
fillAmount, kalan canın oranıdır: can değerinin maksimum cana bölümü. int alanlarıyla bu işlem tamsayı bölmesidir ve 350 / 500 sonucu 0 olur; bu yüzden önce taraflardan birini float türüne dönüştür. Image, UnityEngine.UI içinde bulunur. Bu boss çubuğu her isabetten sonra güncellenir:
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
}Çubuğun rengi de canı takip edebilir: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); çubuk doluyken yeşildir ve boşaldıkça kırmızıya döner.
Görev
KolayŞövalyenin, canı etkilenmeden önce hasarı emen bir kalkanı var. Ok tuşları onu hareket ettirir (Mover.cs) ve dikenlere bastığında dikenler ona 30 hasar verir (Spikes.cs). Knight.cs dosyasını yaz; sahnede healthBar ve shieldBar bağlantıları yapılır, ancak bu çubuklar sahnede boştur:
hp,maxHp(80) değerinden başlar veshield,maxShield(40) değerinden başlar; iki çubuk da tamamen dolu başlar.TakeDamage(int amount): kalkan, hasarın kalan gücünün yettiği kadarını alır ve geri kalanıhpdeğerinden düşer; bu değer hiçbir zaman 0'ın altına inmez.- Her darbeden sonra iki çubuk da kalan miktarı gösterir:
shieldBar,maxShieldiçindeki kalkan miktarını;healthBarisemaxHpiçindeki hp miktarını gösterir.
Play'e bas, birkaç kez dikenlerin üzerine yürü, ardından Check'e bas.
Kendin dene
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;
// Her iki çubuğu da doldur
}
public void TakeDamage(int amount)
{
// Kalkan, karşılayabildiği kadar hasarı karşılar; kalanı hp değerinden düşülür, ancak hp 0 değerinin altına inmez. Ardından her iki çubuğu da göster.
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki Paralar