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.
Görev
OrtaGameManager içinde duvarı oluştur:
public Brick brickPrefabvepublic Transform wallekle (sahne, Brick prefab’ını ve Wall nesnesini bağlar); ayrıcapublic int rows = 5,public int columns = 9,public float spacingX = 1.75f,public float spacingY = 0.75fvepublic float topY = 6fekle.void BuildWall()yaz: her satır ve sütun için bir tuğla oluştur ve onuwallnesnesinin çocuğu yap. 0. satır y =topYkonumunda olsun ve her satırspacingYkadar daha aşağıda yer alsın. Sütunlar arasındaspacingXmesafe olsun ve x = 0 etrafında ortalansın. Tuğlalar z = 0 konumunda yer alsın.Start()içindenBuildWall()ç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.
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.