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é.
Défi
FacileDonne 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 avecbounceetfriction(dynamique et statique à la fois). - Tout ce qui atterrit sur une surface doit rebondir avec le
bouncemaximal de la surface, et tout ce qui glisse dessus doit avoir lefrictionpropre à 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
}
}
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
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 à rebours2Collisions
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 à ramasser