Batu Bata Kuat
Pelajaran 7 dari 16 dalam kursus Game Unity: Brick Breaker di Coddy.
Beberapa bata membutuhkan lebih dari satu pukulan. Setiap bata menyimpan jumlah pukulan yang tersisa: satu pukulan mengurangi jumlah itu satu, dan hanya pukulan yang membuat jumlahnya menjadi 0 yang memecahkan bata dan menghasilkan skor. Sebelum itu, warna bata berubah agar pemain bisa melihat seberapa kuat bata itu.
Array warna yang diisi di Inspector memetakan jumlah pukulan ke warna. Elemen 0 adalah warna untuk satu pukulan tersisa, elemen 1 untuk dua pukulan, jadi warna untuk jumlah n adalah elemen n - 1. Perisai dengan sejumlah charge melakukan hal yang sama:
public Color[] chargeColors; // elemen 0: sisa 1 muatan
void ShowCharges(int charges)
{
GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}Membaca material memberikan renderer ini salinan materialnya sendiri untuk pertama kali, sehingga satu perisai atau satu bata bisa berubah warna tanpa mewarnai ulang setiap salinan prefab. GameManager menentukan seberapa kuat setiap bata baru: int[] dengan satu angka untuk setiap baris, dimulai dari baris paling atas, memungkinkan baris paling atas menerima lebih banyak pukulan daripada baris lainnya.
Tantangan
Sedang- Di dalam
Brick, tambahkanpublic int hits = 1danpublic Color[] colors. Isicolorsdi scene dengan warna biru, oranye, dan merah, untuk masing-masing 1, 2, dan 3 hit tersisa. - Tulis
public void SetHits(int count): fungsi ini menetapkanhitsdan menampilkan warna brick sesuai nilainya. - Ubah
Hit(): kurangihitssebanyak satu. Saat nilainya 0, brick hancur dan menghasilkan skor seperti sebelumnya. Jika tidak, brick hanya menampilkan warna barunya. - Di dalam
GameManager, tambahkanpublic int[] rowHits = { 2, 1, 1, 1, 1 };dan berikanrowHits[row]hit kepada setiap brick baru menggunakanSetHits.
Tekan Play, hancurkan sedikit demi sedikit brick oranye di baris teratas, lalu tekan Periksa.
Coba sendiri
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);
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.