Menu
CoddyTech

Se briser à l’impact

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

Quelle était la violence du choc ? collision.relativeVelocity indique la vitesse à laquelle les deux objets se rapprochaient l’un de l’autre au moment où ils se sont rencontrés, et sa magnitude correspond à la vitesse de l’impact en m/s. C’est une différence de vitesses : une voiture à 10 m/s qui percute une voiture roulant dans le même sens à 8 m/s ne la heurte qu’à 2 m/s, et les deux voitures constatent la même vitesse d’impact.

Cet œuf se brise lorsqu’il atterrit à une vitesse supérieure à crackSpeed. Lâché d’une hauteur de 1 m, il touche le sol à environ 4,4 m/s (la racine carrée de 2 x 9.81 x 1), et d’une hauteur de 2 m, à environ 6,3 m/s :

public float crackSpeed = 5f;

void OnCollisionEnter(Collision collision)
{
    if (collision.relativeVelocity.magnitude > crackSpeed)
    {
        Debug.Log("Splat!");
        Destroy(gameObject);
    }
}

Pourquoi ne pas utiliser le rb.linearVelocity propre à l’œuf ? Lorsque OnCollisionEnter s’exécute, la physique a déjà géré le choc, donc la vitesse de l’œuf est celle qui lui reste après l’impact, proche de zéro. relativeVelocity conserve la vitesse de l’impact lui-même. C’est une vitesse, donc la masse n’entre pas en jeu : un œuf lourd et un œuf léger qui atterrissent à 6 m/s indiquent tous deux la même vitesse, soit 6.

challenge icon

Défi

Facile

La balle roule vers la fenêtre : la flèche vers le haut la fait rouler doucement, la barre d’espace la fait rouler fort (Bowler.cs, déjà écrit). Écris Window.cs. La fenêtre a une strength (10 dans l’Inspector).

  • Chaque impact affaiblit la fenêtre selon sa vitesse : un impact à 2 m/s enlève 2 à strength.
  • Quand strength atteint 0 ou moins, la fenêtre se brise : détruis la fenêtre.

Appuie sur Play, fais rouler quelques balles doucement, puis une balle dure, et enfin sur Check.

Essayez vous-même

using UnityEngine;

public class Window : MonoBehaviour
{
    public float strength = 10f;

    // Chaque coup soustrait sa vitesse d'impact à strength ; à 0, la fenêtre se brise
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Physique et gameplay