Die Mauer
Lektion 5 von 19 im Kurs Unity-Spiel: Brick Breaker von Coddy.
Die Ziegel stehen in einem Raster: Die Reihen verlaufen von oben nach unten, die Spalten von links nach rechts; jeder Ziegel ist eine Kopie des Brick-Prefabs, die in zwei verschachtelten Schleifen erstellt wird. Zuerst eine Reihe:
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);
}Zwischen n Spalten gibt es n minus 1 Abstände, daher liegt die erste Spalte um die Hälfte von (n - 1) * spacing weiter links: 5 Spalten mit einem Abstand von 2 stehen bei -4, -2, 0, 2 und 4. Jede Reihe liegt um spacingY tiefer als die vorherige. Das vierte Argument von Instantiate ist das übergeordnete Objekt, daher befindet sich jeder Ziegel unter dem Wall-Objekt. Wenn das Prefab-Feld einen Skripttyp wie Brick verwendet, gibt Instantiate das Skript des neuen Ziegels zurück.
Aufgabe
MittelBaue eine zentrierte Ziegelwand.
- Füge in
GameManagerFolgendes hinzu:public Brick brickPrefab;,public Transform wall;,rows = 5,columns = 9,spacingX = 1.75f,spacingY = 0.75f,topY = 6f. BuildWall(): Erzeuge für jede Zeile und Spalte einen Ziegel unterwall, bei xleft + col * spacingX, ytopY - row * spacingY, z 0, mitleft = -(columns - 1) * spacingX / 2f.Start()ruftBuildWall()auf.
Drücke „Spielen“: 45 Ziegel stehen in einem Raster (sie zerbrechen noch nicht). Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
void Awake()
{
Instance = this;
}
// Später: die Ziegelsteinmauer, der Punktestand, die Leben und die Level.
}
Alle Lektionen in Unity-Spiel: Brick Breaker
Übe selbstständig: Unity-Playground