Kır
Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 6 / 16.
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
OrtaGameManageriçinde birint scoreve tuğlanınpointsdeğeriniscoredeğerine ekleyen birpublic void BrickBroken(Brick brick)ekle.Brickiçindepublic void Hit()yaz: bu tuğlanın kırıldığınıGameManager.Instance'a bildirir, ardından tuğlayı yok eder.BricksınıfınaOnCollisionEnterekle:Balletiketi atanmış nesne ona çarptığındaHit()çağrılır.
Play'e bas, birkaç tuğla kır, ardından Check'e bas.
Kendin dene
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
// Sıradaki: top bir tuğlayı kırar ve tuğlanın puanını kazanır.
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.