Menu
CoddyTech

A Parede

Lição 5 de 16 do curso Jogo no Unity: Quebra-Tijolos da Coddy.

Os blocos ficam dispostos em uma grade: linhas de cima para baixo, colunas da esquerda para a direita, cada uma sendo uma cópia de um prefab de bloco criado em dois loops aninhados. A posição de um bloco vem dos números da sua linha e coluna multiplicados pelo espaçamento entre os centros dos blocos, que corresponde ao tamanho de um bloco mais um pequeno espaço.

Para centralizar uma grade em x = 0, calcule onde fica a primeira coluna. Entre n colunas há n menos 1 espaços; portanto, com um espaçamento s, os centros das extremidades ficam a (n - 1) * s de distância, e o primeiro fica à metade disso para a esquerda. Cinco postes de cerca, separados por 2 unidades:

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);
}

Eles ficam nas posições -4, -2, 0, 2 e 4: o primeiro poste fica em -4, não em -5, porque quatro espaços separam cinco postes. O quarto argumento de Instantiate, um Transform pai, coloca cada cópia sob um único objeto para manter a Hierarchy organizada. Quando o tipo do campo do prefab é um script, como Brick, Instantiate retorna o script da nova cópia, pronto para ser usado.

challenge icon

Desafio

Médio

Construa a parede em GameManager:

  1. Adicione public Brick brickPrefab e public Transform wall (a cena vincula o prefab Brick e o objeto Wall), além de public int rows = 5, public int columns = 9, public float spacingX = 1.75f, public float spacingY = 0.75f e public float topY = 6f.
  2. Escreva void BuildWall(): um bloco para cada linha e coluna, como filho de wall. A linha 0 fica em y = topY, e cada linha fica spacingY mais abaixo. As colunas ficam separadas por spacingX e centralizadas em x = 0. Os blocos ficam em z = 0.
  3. Chame BuildWall() a partir de Start().

Pressione Play e faça a bola quicar na parede (os blocos ainda não quebram), depois Check.

Experimente você mesmo

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    void Awake()
    {
        Instance = this;
    }

    // Mais tarde: a parede de tijolos, a pontuação, as vidas e os níveis.
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Jogo no Unity: Quebra-Tijolos