Menu
CoddyTech

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.

challenge icon

Görev

Orta

Top tuğlaları kırar ve onların puanlarını kazandırır.

  1. GameManager içinde int score; ve public void BrickBroken(Brick brick) ekle; bu metot, brick.points değerini skora ekler.
  2. Brick içinde public void Hit() yaz: önce GameManager.Instance.BrickBroken(this);, ardından Destroy(gameObject);
  3. Brick içindeki OnCollisionEnter metodunda, nesne Ball etiketiyle etiketlendiğinde Hit() 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