Le mur
Leçon 5 sur 16 du cours Jeu Unity : casse-briques de Coddy.
Les briques sont disposées en grille : les rangées vont du haut vers le bas, les colonnes de gauche à droite, chacune étant une copie d’un prefab de brique créé dans deux boucles imbriquées. La position d’une brique est déterminée par ses numéros de rangée et de colonne multipliés par l’espacement entre les centres des briques, qui correspond à la taille d’une brique plus un petit intervalle.
Pour centrer une grille sur x = 0, détermine où se trouve la première colonne. Entre n colonnes, il y a n moins 1 intervalles ; avec un espacement de s, les centres des colonnes aux extrémités sont séparés de (n - 1) * s, et la première se trouve à la moitié de cette distance vers la gauche. Cinq poteaux de clôture espacés de 2 unités :
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);
}Ils se trouvent à -4, -2, 0, 2 et 4 : le premier poteau est à -4, et non à -5, car quatre intervalles séparent cinq poteaux. Le quatrième argument d’Instantiate, un Transform parent, place chaque copie sous un même objet afin que la Hierarchy reste bien organisée. Lorsque le type du champ prefab est un script, comme Brick, Instantiate renvoie le script de la nouvelle copie, prêt à être utilisé.
Défi
MoyenConstruisez le mur dans GameManager :
- Ajoutez
public Brick brickPrefabetpublic Transform wall(la scène relie le prefab Brick et l’objet Wall), ainsi quepublic int rows = 5,public int columns = 9,public float spacingX = 1.75f,public float spacingY = 0.75fetpublic float topY = 6f. - Écrivez
void BuildWall(): une brique pour chaque ligne et colonne, enfant dewall. La ligne 0 est à y =topYet chaque ligne est situéespacingYplus bas. Les colonnes sont espacées despacingXet centrées sur x = 0. Les briques se trouvent à z = 0. - Appelez
BuildWall()depuisStart().
Appuyez sur Play et faites rebondir la balle contre le mur (les briques ne se cassent pas encore), puis cliquez sur Check.
Essayez vous-même
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
void Awake()
{
Instance = this;
}
// Plus tard : le mur de briques, le score, les vies et les niveaux.
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.