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.
Görev
OrtaBrickiçindepublic int hits = 1vepublic Color[] colorsekleyin. Sahne, 1, 2 ve 3 vuruş kaldığında kullanılmak üzerecolorsdizisini mavi, turuncu ve kırmızı renklerle doldurur.public void SetHits(int count)metodunu yazın:hitsdeğerini ayarlar ve tuğlanın bu değere karşılık gelen rengini gösterir.Hit()metodunu değiştirin:hitsdeğ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.GameManageriçindepublic int[] rowHits = { 2, 1, 1, 1, 1 };ekleyin ve her yeni tuğlayaSetHitsilerowHits[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);
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.