Kır
Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 6 / 19.
Tuğlaların Rigidbody'si yok, ancak topun var ve Unity bir çarpışmada OnCollisionEnter olayını her iki nesneye de gönderir. Bu nedenle bir tuğla, çarpışmayı kendisi algılayabilir. Tuğlanın betiğinde gameObject tuğlanın kendisidir, collision.gameObject ise ona çarpan nesnedir.
Skor GameManager'a aittir ve tuğlalar bir prefab'ın kopyalarıdır. Prefab, sahnenin dışında bulunan bir varlıktır; bu nedenle alanları Inspector'da sahnedeki GameManager'ı gösteremez. GameManager, Awake() içinde statik GameManager.Instance değerini kendisine ayarlar; böylece prefab kopyaları da dahil olmak üzere her betik ona erişebilir.
Oyuncu çarptığında parçalanan bir vazo:
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player")) Shatter();
}
public void Shatter()
{
Destroy(gameObject);
}Destroy(gameObject) vazoyu kaldırır. Destroy(collision.gameObject) oyuncuyu kaldırırdı, Destroy(this) ise yalnızca betiği kaldırır ve vazoyu yerinde bırakır. Kırma işlemini kendine ait bir public yöntemde tutmak, başka kodların da (bir bomba veya güçlendirme gibi) vazoyu kırabilmesini sağlar.
Görev
OrtaTop tuğlaları kırar ve onların puanlarını kazandırır.
GameManageriçindeint score;vepublic void BrickBroken(Brick brick)ekle; bu metot,brick.pointsdeğerini skora ekler.Brickiçindepublic void Hit()yaz: önceGameManager.Instance.BrickBroken(this);, ardındanDestroy(gameObject);BrickiçindekiOnCollisionEntermetodunda, nesneBalletiketiyle etiketlendiğindeHit()metodunu çağır.
“Oyna” düğmesine bas ve topu fırlat: topun vurduğu her tuğla kaybolur. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
// Sırada: top bir tuğlayı kırar ve tuğlanın puanını kazanır.
}
Unity Oyunu: Tuğla Kırma bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground