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.
Desafio
MédioConstrua a parede em GameManager:
- Adicione
public Brick brickPrefabepublic Transform wall(a cena vincula o prefab Brick e o objeto Wall), além depublic int rows = 5,public int columns = 9,public float spacingX = 1.75f,public float spacingY = 0.75fepublic float topY = 6f. - Escreva
void BuildWall(): um bloco para cada linha e coluna, como filho dewall. A linha 0 fica em y =topY, e cada linha ficaspacingYmais abaixo. As colunas ficam separadas porspacingXe centralizadas em x = 0. Os blocos ficam em z = 0. - Chame
BuildWall()a partir deStart().
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.
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.