Menu
CoddyTech

Rebond et friction

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

La façon dont un collider rebondit et glisse dépend de son PhysicsMaterial (le nom utilisé dans Unity 6 ; les versions antérieures l’appelaient PhysicMaterial). bounciness va de 0 (aucun rebond) à 1 (conserve toute sa vitesse). dynamicFriction ralentit un corps qui glisse, et staticFriction détermine la force avec laquelle il faut pousser un corps au repos avant qu’il ne commence à glisser. Un collider sans matériau a une friction de 0.6 et une élasticité de 0. Cette super balle attribue un matériau rebondissant à son propre collider :

void Start()
{
    PhysicsMaterial mat = GetComponent<Collider>().material;   // la copie propre à ce collider
    mat.bounciness = 0.9f;
    mat.bounceCombine = PhysicsMaterialCombine.Maximum;
}

Un contact implique deux colliders, donc Unity combine leurs deux valeurs. Chaque matériau détermine comment, avec bounceCombine pour l’élasticité et frictionCombine pour la friction, et chacun choisit l’un des quatre modes suivants : Average (le mode par défaut), Minimum, Multiply ou Maximum. Lorsque les deux colliders demandent des modes différents, celui qui apparaît le plus tard dans cette liste l’emporte. Sur un sol sans matériau, le mode Average donnerait à la balle (0.9 + 0) / 2 = 0.45. Avec Maximum, elle conserve 0.9 de sa vitesse à chaque rebond, soit 0.9 x 0.9 = 81% de sa hauteur, puisque la hauteur est proportionnelle au carré de la vitesse.

.material attribue à ce collider sa propre copie de son matériau, donc les modifications ne l’affectent que lui. .sharedMaterial désigne l’asset du matériau lui-même, partagé par tous les colliders qui l’utilisent, et sa valeur est null pour un collider auquel aucun matériau n’a jamais été attribué.

challenge icon

Défi

Facile

Donne ses surfaces au terrain de jeu. Le script Surface est sur le trampoline bleu (bounce 0.8, friction 0.6) et sur la bande de glace (bounce 0, friction 0.1). La balle et la caisse n’ont pas de matériaux propres.

  • Dans Start(), définis le matériau propre à ce collider avec bounce et friction (dynamique et statique à la fois).
  • Tout ce qui atterrit sur une surface doit rebondir avec le bounce maximal de la surface, et tout ce qui glisse dessus doit avoir le friction propre à la surface, sans mélange avec le 0.6 des objets sans matériau.

Appuie sur Play pour regarder la balle rebondir, puis sur Check : la caisse glisse aussi sur la glace.

Essayez vous-même

using UnityEngine;

public class Surface : MonoBehaviour
{
    public float bounce = 0f;
    public float friction = 0.6f;

    void Start()
    {
        // Attribuez à ce collider son propre matériau avec bounce et friction
    }
}
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