Sağlık Çubukları
Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 16 / 18.
Her düşmanın üzerindeki bir çubuk, kalan canını gösterir. Düşman prefab'ında bu çubuk iki ince küpten oluşur: koyu renkli bir arka plan ve önündeki yeşil bir dolgu. Dolgunun genişliği, kalan canın toplam cana bölünmesiyle elde edilir; bu, 0 ile 1 arasında bir sayıdır. Dolgunun x ölçeğini bu sayıyla çarpmak çubuğu kısaltır. Ancak küp merkezinden ölçeklenir, bu yüzden dolgu her iki uçtan ortaya doğru küçülür. Dolgu, çubuğun sol kenarındaki boş bir pivot nesnesinin altında durur ve betik bunun yerine pivotu ölçekler: altındaki her şey o kenara doğru küçülür ve çubuk sağdan boşalır.
Kesrin kayan noktalı sayılarla hesaplanması gerekir. health / data.maxHealth iki int'i böler ve C# int bölmesindeki kesir kısmını atar: 6 / 9 sonucu 0 olur, bu yüzden çubuk ilk darbeden sonra boş görünür. Önce bir tarafı dönüştürmek, yani (float)health / data.maxHealth kullanmak 0.67 sonucunu verir. Seviyesi alttaki pivotundan yukarı doğru yükselen bir su deposu:
float level = (float)water / capacity;
waterPivot.localScale = new Vector3(1f, level, 1f);Tam dolu bir çubuk oyuncuya hiçbir şey anlatmaz, bu yüzden çubuk başlangıçta gizlidir: prefab'da etkin değildir ve ilk darbe onu etkinleştirir. Etkin olmayan bir nesne Update almaz, ancak yöntemleri yine de çağrılabilir. Her düşman, kendine ait çubuğuyla prefab'ın ayrı bir kopyasıdır.
Görev
ZorHealthBariçinde serileştirilmiş bir Transformfillekle (Inspector'da çubuğun FillPivot'i atanır) ve çubuğun GameObject'ini etkinleştiren,fill'i x eksenindefractiondeğerine ölçekleyenpublic void Show(float fraction)metodunu ekle.Enemyiçinde serileştirilmiş birhealthBaralanı ekle (bir HealthBar). TakeDamage canı her azalttığında, kalan canımaxHealthdeğerinin kesri olarak göster.
Her düşman prefab'ında kendi çubuğu bulunur: devre dışıdır, HealthBar betiğine sahiptir ve dolgu, sol kenardaki bir pivotun altındadır. Play'e bas ve kuleler ateş ederken çubukları izle, ardından Check'e bas.
Kendin dene
using UnityEngine;
// Daha sonra eklenecek: bir düşmanın üzerinde kalan canını gösteren çubuk.
public class HealthBar : MonoBehaviour
{
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.