Menu
CoddyTech

Casse

Leçon 6 sur 19 du cours Jeu Unity : casse-briques de Coddy.

Les briques n’ont pas de Rigidbody, mais la balle en a un, et Unity envoie OnCollisionEnter aux deux objets lors d’une collision. Une brique peut donc détecter elle-même le choc. Dans le script de la brique, gameObject désigne la brique et collision.gameObject désigne l’objet qui l’a percutée.

Le score appartient au GameManager, et les briques sont des copies d’un prefab. Un prefab est un asset situé hors de la scène ; ses champs ne peuvent donc pas pointer vers le GameManager de la scène dans l’Inspector. Le GameManager définit GameManager.Instance comme une référence statique vers lui-même dans Awake(), ce qui permet à n’importe quel script d’y accéder, y compris les copies du prefab.

Un vase qui se brise lorsque le joueur le percute :

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player")) Shatter();
}

public void Shatter()
{
    Destroy(gameObject);
}

Destroy(gameObject) supprime le vase. Destroy(collision.gameObject) supprimerait le joueur, et Destroy(this) supprime uniquement le script, en laissant le vase debout. Le fait de conserver la destruction dans sa propre méthode publique permet aussi à d’autres éléments de code, comme une bombe ou un bonus, de briser le vase.

challenge icon

Défi

Moyen

La balle casse les briques et rapporte leurs points.

  1. Dans GameManager, ajoute int score; et public void BrickBroken(Brick brick), qui ajoute brick.points au score.
  2. Dans Brick, écris public void Hit() : GameManager.Instance.BrickBroken(this);, puis Destroy(gameObject);
  3. Dans OnCollisionEnter de Brick, appelle Hit() lorsque l’objet porte l’étiquette Ball.

Appuie sur « Jouer » et lance la balle : chaque brique qu’elle touche disparaît. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Brick : MonoBehaviour
{
    public int points = 10;

    // Ensuite : la balle casse une brique et marque les points correspondants.
}

Toutes les leçons de Jeu Unity : casse-briques

Entraînez-vous par vous-même : Playground Unity