Briques solides
Leçon 7 sur 19 du cours Jeu Unity : casse-briques de Coddy.
Certains blocs nécessitent plusieurs coups. Chaque bloc conserve le nombre de coups qu'il lui reste : un coup en retire un, et seul le coup qui le ramène à 0 casse le bloc et rapporte des points. En attendant, le bloc change de couleur pour que le joueur puisse voir à quel point il est encore résistant.
Un tableau de couleurs rempli dans l'Inspector associe le nombre de coups à une couleur. L'élément 0 correspond à la couleur lorsqu'il reste un coup, l'élément 1 à celle lorsqu'il en reste deux, donc la couleur correspondant au nombre n est l'élément n - 1. Un bouclier avec des charges fonctionne de la même façon :
public Color[] chargeColors; // élément 0 : il reste 1 charge
void ShowCharges(int charges)
{
GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}La première fois qu'on lit material, ce renderer reçoit sa propre copie du matériau ; ainsi, un bouclier ou un bloc change de couleur sans repeindre chaque copie du prefab. Le GameManager décide de la résistance de chaque nouveau bloc : un int[] contenant un nombre par rangée, en commençant par la rangée du haut, permet à la rangée du haut de nécessiter plus de coups que les autres.
Défi
MoyenLes briques de la rangée du haut nécessitent deux coups.
- Dans
Brick, ajoutepublic int hits = 1;,public Color[] colors;(la scène définit le bleu, l’orange et le rouge) ainsi queSetHits(int count): définis hits et la couleurcolors[hits - 1]. Hit()retire un coup à hits : à 0, la brique se casse et rapporte des points ; sinon, elle affiche la nouvelle couleur.- Dans
GameManager, ajoutepublic int[] rowHits = { 2, 1, 1, 1, 1 };et appellebrick.SetHits(rowHits[row])pour chaque nouvelle brique.
Appuie sur « Jouer » : la rangée du haut est orange et devient bleue lorsqu’on la frappe. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Ball")) Hit();
}
public void Hit()
{
GameManager.Instance.BrickBroken(this);
Destroy(gameObject);
}
}
Toutes les leçons de Jeu Unity : casse-briques
Entraînez-vous par vous-même : Playground Unity