Menu
CoddyTech

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.

challenge icon

Görev

Zor
  1. HealthBar içinde serileştirilmiş bir Transform fill ekle (Inspector'da çubuğun FillPivot'i atanır) ve çubuğun GameObject'ini etkinleştiren, fill'i x ekseninde fraction değerine ölçekleyen public void Show(float fraction) metodunu ekle.
  2. Enemy içinde serileştirilmiş bir healthBar alanı ekle (bir HealthBar). TakeDamage canı her azalttığında, kalan canı maxHealth değ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
{
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity Oyunu: Kule Savunması bölümündeki tüm dersler