Tembok
Pelajaran 5 dari 16 dalam kursus Game Unity: Brick Breaker di Coddy.
Batu bata tersusun dalam grid: baris dari atas ke bawah, kolom dari kiri ke kanan, masing-masing merupakan salinan prefab batu bata yang dibuat dalam dua perulangan bersarang. Posisi batu bata ditentukan dari nomor baris dan kolomnya dikalikan jarak antara pusat-pusat batu bata, yaitu ukuran batu bata ditambah celah kecil.
Untuk memusatkan grid pada x = 0, tentukan posisi kolom pertama. Di antara n kolom terdapat n minus 1 celah, jadi dengan jarak s, jarak antara pusat-pusat di kedua ujung adalah (n - 1) * s, dan pusat yang pertama berada setengah jarak itu ke kiri. Lima tiang pagar dengan jarak 2 unit:
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);
}Tiang-tiang tersebut berada di -4, -2, 0, 2, dan 4: tiang pertama berada di -4, bukan -5, karena ada empat celah di antara lima tiang. Argumen keempat Instantiate, yaitu Transform induk, menempatkan setiap salinan di bawah satu object agar Hierarchy tetap rapi. Jika tipe field prefab adalah script, seperti Brick, Instantiate mengembalikan script salinan baru yang siap digunakan.
Tantangan
SedangBangun dinding di GameManager:
- Tambahkan
public Brick brickPrefabdanpublic Transform wall(scene menghubungkan prefab Brick dan object Wall), sertapublic int rows = 5,public int columns = 9,public float spacingX = 1.75f,public float spacingY = 0.75f, danpublic float topY = 6f. - Tulis
void BuildWall(): buat satu brick untuk setiap baris dan kolom, lalu jadikan masing-masing anak dariwall. Baris 0 berada pada y =topY, dan setiap baris beradaspacingYlebih rendah. Jarak antar kolom adalahspacingX, dan posisinya terpusat pada x = 0. Brick berada pada z = 0. - Panggil
BuildWall()dariStart().
Tekan Play dan pantulkan bola dari dinding (brick belum pecah), lalu tekan Check.
Coba sendiri
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
void Awake()
{
Instance = this;
}
// Nanti: dinding bata, skor, nyawa, dan level.
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.