Menu
CoddyTech

Can Çubukları

Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 22 / 25.

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

Her düşman vurulduğunda üzerinde bir sağlık çubuğu göster.

  1. HealthBar içinde [SerializeField] private Transform fill; ve public void Show(float fraction) ekle: çubuğu etkinleştir ve fill.localScale = new Vector3(fraction, 1f, 1f); ayarla.
  2. Enemy içinde [SerializeField] private HealthBar healthBar; ekle; TakeDamage sağlığı azalttıktan sonra healthBar.Show((float)health / data.maxHealth); çağır.

“Oyna” düğmesine bas: kuleler vurdukça çubuklar görünür ve küçülür. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

// Daha sonra eklenecek: düşmanın üzerinde kalan canını gösteren çubuk.
public class HealthBar : MonoBehaviour
{
}

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

Kendi başına pratik yap: Unity playground