Ściana
Lekcja 5 z 19 w kursie Gra w Unity: Brick Breaker w Coddy.
Cegły stoją w siatce: rzędy od góry w dół, kolumny od lewej do prawej; każda jest kopią prefabrykatu Brick utworzoną w dwóch zagnieżdżonych pętlach. Najpierw jeden rząd:
float left = -(columns - 1) * spacingX / 2f;
for (int col = 0; col < columns; col++)
{
Vector3 pos = new Vector3(left + col * spacingX, topY, 0f);
Instantiate(brickPrefab, pos, Quaternion.identity, wall);
}Między n kolumnami jest n minus 1 odstępów, więc pierwsza z nich znajduje się w odległości połowy (n - 1) * spacing w lewo: 5 kolumn oddalonych od siebie o 2 stoi w punktach -4, -2, 0, 2 i 4. Każdy kolejny rząd znajduje się o spacingY niżej od poprzedniego. Czwarty argument funkcji Instantiate to obiekt nadrzędny, więc każda cegła znajduje się w obiekcie Wall. Jeśli pole prefabrykatu ma typ skryptu, taki jak Brick, Instantiate zwraca skrypt nowej cegły.
Wyzwanie
ŚredniZbuduj wyśrodkowaną ścianę z cegieł.
- W
GameManagerdodajpublic Brick brickPrefab;,public Transform wall;,rows = 5,columns = 9,spacingX = 1.75f,spacingY = 0.75f,topY = 6f. BuildWall(): umieść cegłę podwalldla każdego wiersza i kolumny, w punkcie xleft + col * spacingX, ytopY - row * spacingY, z 0, gdzieleft = -(columns - 1) * spacingX / 2f.Start()wywołujeBuildWall().
Naciśnij „Graj”: 45 cegieł tworzy siatkę (jeszcze się nie rozpadają). Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
void Awake()
{
Instance = this;
}
// Później: ściana z cegieł, wynik, życia i poziomy.
}
Wszystkie lekcje w sekcji Gra w Unity: Brick Breaker
Poćwicz samodzielnie: Edytor online Unity