Menu
CoddyTech

Dayanıklı Tuğlalar

Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 7 / 19.

Bazı tuğlalar birden fazla darbe alır. Her tuğla, kalan darbe sayısını tutar: bir darbe bu sayıyı bir azaltır ve yalnızca sayıyı 0'a indiren darbe tuğlayı kırar ve puan kazandırır. O zamana kadar tuğlanın rengi değişir, böylece oyuncu tuğlanın hâlâ ne kadar dayanıklı olduğunu görebilir.

Inspector'da doldurulan bir renk dizisi, sayıyı bir renkle eşleştirir. 0. öğe, bir darbe kalmışken kullanılacak renktir; 1. öğe iki darbe için kullanılır, dolayısıyla n sayısına karşılık gelen renk, n - 1 öğesidir. Yükleri olan bir kalkan da aynı şekilde çalışır:

public Color[] chargeColors;   // eleman 0: 1 şarj kaldı

void ShowCharges(int charges)
{
    GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}

material okumak, bu renderer'a malzemenin ilk seferinde kendine ait bir kopyasını verir; böylece bir kalkanın veya tuğlanın rengi, prefab'ın her kopyasını yeniden boyamadan değişir. GameManager, her yeni tuğlanın ne kadar dayanıklı olacağına karar verir: her satır için bir sayı içeren, en üst satırdan başlayan bir int[], en üst satırın diğerlerinden daha fazla darbe almasını sağlar.

challenge icon

Görev

Orta

Üst sıradaki tuğlalar iki darbede kırılır.

  1. Brick içinde public int hits = 1;, public Color[] colors; (sahnede mavi, turuncu, kırmızı olarak ayarlanır) ve SetHits(int count) ekle: hits değerini ve colors[hits - 1] rengini ayarla.
  2. Hit(), hits değerini bir azaltır: 0 olduğunda tuğla kırılır ve puan kazandırır; aksi hâlde yeni rengi gösterir.
  3. GameManager içinde public int[] rowHits = { 2, 1, 1, 1, 1 }; ekle ve her yeni tuğlada brick.SetHits(rowHits[row]) çağrısını yap.

“Oyna” düğmesine bas: üst sıra turuncu olur ve vurulduğunda maviye döner. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class Brick : MonoBehaviour
{
    public int points = 10;

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Ball")) Hit();
    }

    public void Hit()
    {
        GameManager.Instance.BrickBroken(this);
        Destroy(gameObject);
    }
}

Unity Oyunu: Tuğla Kırma bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground