Menu
CoddyTech

Qu’est-ce que j’ai touché ?

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 9 sur 71.

La Collision que Unity transmet à OnCollisionEnter décrit l’autre côté du contact. collision.gameObject est l’objet que tu as heurté : collision.gameObject.name est donc son nom, et collision.gameObject.CompareTag("Hazard") vérifie son tag. (collision.collider désigne le collider précis que tu as touché, lorsqu’un objet en possède plusieurs.)

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Bumped into " + collision.gameObject.name);
    if (collision.gameObject.CompareTag("Hazard"))
    {
        Debug.Log("Ouch!");
    }
}

La première ligne qu’elle consigne est Bumped into Floor, dès le début du jeu : le sol sur lequel elle se trouve compte aussi comme une collision. Un script qui réagit aux chocs vérifie donc toujours d’abord ce qu’il a heurté. Fais attention à l’objet que tu désignes : CompareTag("Hazard") tout seul vérifie le tag de ton propre objet, et Destroy(gameObject) détruit ton propre objet, tandis que Destroy(collision.gameObject) supprime celui que tu as heurté.

challenge icon

Défi

Facile

Donne un rôle au chasse-neige : déblayer les blocs étiquetés Snow.

  1. Ajoute void OnCollisionEnter(Collision collision) à Plow, en agissant uniquement lorsque collision.gameObject.CompareTag("Snow").
  2. À l’intérieur, exécute Destroy(collision.gameObject);, ajoute 1 à un champ cleared et consigne "Cleared " + cleared.

Appuie sur « Jouer » et fonce dans la neige : chaque bloc disparaît et la Console les compte. Puis clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Plow : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;
    private int cleared;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        float h = Input.GetAxisRaw("Horizontal");
        rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, 0);
    }

    // Neige rencontrée par le chasse-neige : la détruire, la compter et afficher le total dans le journal
}

Toutes les leçons de Physique et gameplay

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