Menu
CoddyTech

Duvar

Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 5 / 16.

Tuğlalar bir ızgarada durur: yukarıdan aşağıya satırlar, soldan sağa sütunlar; her biri, iç içe iki döngüde oluşturulmuş bir tuğla prefab’ının kopyasıdır. Bir tuğlanın konumu, satır ve sütun numaralarının tuğla merkezleri arasındaki aralıkla çarpılmasıyla belirlenir; bu aralık, tuğlanın boyutuna küçük bir boşluk eklenerek elde edilir.

Bir ızgarayı x = 0’da ortalamak için ilk sütunun nereye yerleşeceğini hesapla. n sütun arasında n eksi 1 boşluk vardır; dolayısıyla aralık s olduğunda uçlardaki merkezler birbirinden (n - 1) * s kadar uzaktadır ve ilk merkez bunun yarısı kadar solda yer alır. Aralarında 2 birim mesafe olan beş çit direği:

int posts = 5;
float spacing = 2f;
float left = -(posts - 1) * spacing / 2f;
for (int i = 0; i < posts; i++)
{
    Instantiate(postPrefab, new Vector3(left + i * spacing, 0f, 3f), Quaternion.identity);
}

Direkler -4, -2, 0, 2 ve 4 konumlarında durur: ilk direk -5’te değil, -4’tedir; çünkü beş direği dört boşluk ayırır. Instantiate’ın dördüncü argümanı olan bir parent Transform, her kopyayı bir nesnenin altına yerleştirerek Hierarchy’nin düzenli kalmasını sağlar. Prefab alanının türü Brick gibi bir betik olduğunda, Instantiate kullanıma hazır yeni kopyanın betiğini döndürür.

challenge icon

Görev

Orta

GameManager içinde duvarı oluştur:

  1. public Brick brickPrefab ve public Transform wall ekle (sahne, Brick prefab’ını ve Wall nesnesini bağlar); ayrıca public int rows = 5, public int columns = 9, public float spacingX = 1.75f, public float spacingY = 0.75f ve public float topY = 6f ekle.
  2. void BuildWall() yaz: her satır ve sütun için bir tuğla oluştur ve onu wall nesnesinin çocuğu yap. 0. satır y = topY konumunda olsun ve her satır spacingY kadar daha aşağıda yer alsın. Sütunlar arasında spacingX mesafe olsun ve x = 0 etrafında ortalansın. Tuğlalar z = 0 konumunda yer alsın.
  3. Start() içinden BuildWall() çağır.

Play'e bas ve topu duvardan sektir (tuğlalar henüz kırılmaz), ardından Check'e bas.

Kendin dene

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    void Awake()
    {
        Instance = this;
    }

    // Daha sonra: tuğla duvarı, puan, canlar ve seviyeler.
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity Oyunu: Tuğla Kırma bölümündeki tüm dersler