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.
Görev
ZorHer düşman vurulduğunda üzerinde bir sağlık çubuğu göster.
HealthBariçinde[SerializeField] private Transform fill;vepublic void Show(float fraction)ekle: çubuğu etkinleştir vefill.localScale = new Vector3(fraction, 1f, 1f);ayarla.Enemyiçinde[SerializeField] private HealthBar healthBar;ekle;TakeDamagesağlığı azalttıktan sonrahealthBar.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