Rebond et friction
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 12 sur 71.
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 varie de 0 (aucun rebond) à 1 (conserve toute sa vitesse). dynamicFriction ralentit un corps qui glisse, et staticFriction détermine avec quelle force il faut pousser un corps au repos avant qu’il ne commence à glisser. Un collider sans matériau se comporte comme s’il avait une friction de 0.6 et un coefficient de rebond de 0. Cette super balle donne à son propre collider un matériau rebondissant :
void Start()
{
PhysicsMaterial mat = GetComponent<Collider>().material; // la copie propre à ce collider
mat.bounciness = 0.9f;
mat.bounceCombine = PhysicsMaterialCombine.Maximum;
}Un contact met en jeu deux colliders, Unity combine donc leurs deux valeurs. Chaque matériau définit la manière de les combiner, avec bounceCombine pour le coefficient de rebond et frictionCombine pour la friction ; chacun propose quatre modes : 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 dépend du carré de la vitesse.
.material donne à ce collider sa propre copie de son matériau, de sorte que les modifications ne l’affectent que lui. .sharedMaterial est l’asset de matériau lui-même, partagé par tous les colliders qui l’utilisent ; il vaut null sur un collider auquel aucun matériau n’a jamais été attribué.
Défi
FacileAttribue au trampoline et à la glace leurs propres valeurs de rebond et de friction.
- Dans
Start(), récupèrePhysicsMaterial mat = GetComponent<Collider>().material;et définismat.bounciness = bounce;,mat.dynamicFrictionetmat.staticFrictionsurfriction. - Définis
mat.bounceCombine = PhysicsMaterialCombine.Maximum;etmat.frictionCombine = PhysicsMaterialCombine.Minimum;, afin que les valeurs propres à la surface l'emportent.
Appuie sur « Jouer » : la balle rebondit haut sur le trampoline. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Surface : MonoBehaviour
{
public float bounce = 0f;
public float friction = 0.6f;
void Start()
{
// Attribuer à ce collider son propre matériau avec bounce et friction
}
}
Toutes les leçons de Physique et gameplay
1Corps rigide
Gravité et massePousser avec AddForceSauter avec une impulsionFixedUpdate pour la physiqueVitesseCorps cinématiquesRécapitulatif : plateforme de lancement4Coroutines
InvoquerInvokeRepeating, CancelInvokeVotre première coroutineBoucles dans les coroutinesArrêter les coroutinesRécapitulatif : compte à rebours7Rotation
Angles d’EulerQuaternionsRegardez dans la direction où vous vous déplacezTourner en douceurRécapitulatif : tourelle10Projet : Évasion de l’arène
L’arèneLes chasseurs2Collisions
OnCollisionEnterQu’est-ce que j’ai touché ?Se briser à l’impactRester au solRebond et frictionFormes des collidersRécapitulatif : mur destructible5Projet : Course aux pièces
La balle roulanteDes pièces à ramasser3Déclencheurs
Colliders déclencheursOnTriggerEnterObjets à ramasserLes caisses gardent le resteZones mortellesEntrée et sortieRécapitulatif : clé et porteEntraînez-vous par vous-même : Playground Unity