Hancurkan
Pelajaran 6 dari 16 dalam kursus Game Unity: Brick Breaker di Coddy.
Batu bata tidak memiliki Rigidbody, tetapi bola memilikinya, dan Unity mengirim OnCollisionEnter ke kedua object dalam sebuah tabrakan. Jadi, batu bata bisa mendeteksi benturan itu sendiri. Dalam script batu bata, gameObject adalah batu bata tersebut dan collision.gameObject adalah benda yang menabraknya.
Skor dikelola oleh GameManager, dan batu bata adalah salinan prefab. Prefab adalah aset di luar scene, jadi field-nya tidak dapat menunjuk ke GameManager di scene melalui Inspector. GameManager menetapkan GameManager.Instance statis ke dirinya sendiri di Awake(), sehingga script apa pun dapat mengaksesnya, termasuk salinan prefab.
Vas yang pecah saat pemain menabraknya:
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player")) Shatter();
}
public void Shatter()
{
Destroy(gameObject);
}Destroy(gameObject) menghapus vas. Destroy(collision.gameObject) akan menghapus pemain, sedangkan Destroy(this) hanya menghapus script, sehingga vas tetap berdiri. Dengan menempatkan logika pemecahan dalam method publik tersendiri, kode lain, seperti bom atau power-up, juga dapat memecahkan vas.
Tantangan
Sedang- Di
GameManager, tambahkanint scoredanpublic void BrickBroken(Brick brick), yang menambahkanpointsmilik brick kescore. - Di
Brick, tulispublic void Hit(): fungsi ini memberi tahuGameManager.Instancebahwa brick ini hancur, lalu menghancurkan brick tersebut. - Tambahkan
OnCollisionEnterkeBrick: ketika object berlabelBallmenabraknya, panggilHit().
Tekan Play, hancurkan beberapa brick, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
// Selanjutnya: bola menghancurkan batu bata dan mendapatkan poinnya.
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.