Menu
CoddyTech

Dayanıklı Tuğlalar

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

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
  1. Brick içinde public int hits = 1 ve public Color[] colors ekleyin. Sahne, 1, 2 ve 3 vuruş kaldığında kullanılmak üzere colors dizisini mavi, turuncu ve kırmızı renklerle doldurur.
  2. public void SetHits(int count) metodunu yazın: hits değerini ayarlar ve tuğlanın bu değere karşılık gelen rengini gösterir.
  3. Hit() metodunu değiştirin: hits değerini bir azaltın. Değer 0 olduğunda tuğla kırılır ve önceki gibi puan kazandırır; aksi takdirde yalnızca yeni rengini gösterir.
  4. GameManager içinde public int[] rowHits = { 2, 1, 1, 1, 1 }; ekleyin ve her yeni tuğlaya SetHits ile rowHits[row] kadar vuruş atayın.

Play'e basın, en üst sıradaki turuncu tuğlayı aşındırın, ardından Check'e basın.

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);
    }
}
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: Tuğla Kırma bölümündeki tüm dersler