Menu
CoddyTech

Il muro

Lezione 5 di 16 del corso Gioco Unity: Rompi-mattoni di Coddy.

I mattoni sono disposti in una griglia: righe dall’alto verso il basso, colonne da sinistra a destra, ciascuno una copia di un prefab di mattone creato con due cicli annidati. La posizione di un mattone deriva dai numeri della sua riga e colonna moltiplicati per la distanza tra i centri dei mattoni, pari alla dimensione di un mattone più un piccolo spazio.

Per centrare una griglia su x = 0, calcola dove va la prima colonna. Tra n colonne ci sono n meno 1 spazi, quindi, con una distanza s, i centri esterni sono separati da (n - 1) * s, e il primo si trova a metà di quella distanza verso sinistra. Cinque paletti, distanti 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);
}

Si trovano a -4, -2, 0, 2 e 4: il primo paletto è a -4, non a -5, perché quattro spazi separano cinque paletti. Il quarto argomento di Instantiate, un Transform genitore, colloca ogni copia sotto un unico oggetto, mantenendo ordinata la Hierarchy. Quando il tipo del campo prefab è uno script, come Brick, Instantiate restituisce lo script della nuova copia, pronto all’uso.

challenge icon

Sfida

Medio

Costruisci il muro in GameManager:

  1. Aggiungi public Brick brickPrefab e public Transform wall (la scena collega il prefab Brick e l’oggetto Wall), e public int rows = 5, public int columns = 9, public float spacingX = 1.75f, public float spacingY = 0.75f e public float topY = 6f.
  2. Scrivi void BuildWall(): un mattone per ogni riga e colonna, con wall come oggetto padre. La riga 0 si trova a y = topY e ogni riga è più in basso di spacingY. Le colonne sono distanziate di spacingX e centrate su x = 0. I mattoni si trovano a z = 0.
  3. Chiama BuildWall() da Start().

Premi Play e fai rimbalzare la palla contro il muro (i mattoni non si rompono ancora), poi premi Check.

Provalo tu

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    void Awake()
    {
        Instance = this;
    }

    // Più avanti: il muro di mattoni, il punteggio, le vite e i livelli.
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Gioco Unity: Rompi-mattoni