Casser
Leçon 6 sur 16 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.
Défi
Moyen- Dans
GameManager, ajoute unint scoreetpublic void BrickBroken(Brick brick), qui ajoute lespointsde la brique àscore. - Dans
Brick, écrispublic void Hit(): cette méthode indique àGameManager.Instanceque cette brique a été détruite, puis détruit la brique. - Ajoute
OnCollisionEnteràBrick: lorsque l’objet portant l’étiquetteBallle touche, appelleHit().
Appuie sur Play, détruis quelques briques, puis clique sur Check.
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.
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.