Se briser à l’impact
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 10 sur 71.
Quel a été l’impact ? collision.relativeVelocity correspond à la vitesse à laquelle les deux objets se rapprochaient au moment où ils se sont rencontrés, et sa magnitude est la vitesse d’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 percute qu’à 2 m/s, et les deux voitures constatent la même vitesse d’impact.
Cette coquille se casse lorsqu’elle atterrit à une vitesse supérieure à crackSpeed. Lâchée de 1 m, elle heurte le sol à environ 4,4 m/s (la racine carrée de 2 x 9.81 x 1), et 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 de la coquille ? Au moment où OnCollisionEnter s’exécute, la physique a déjà géré l’impact : la vitesse de la coquille est donc celle qui lui reste après le choc, 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 : une coquille lourde et une coquille légère atterrissant à 6 m/s indiquent toutes deux la même valeur de 6.
Défi
FacileÉcris Window.cs : chaque impact affaiblit la fenêtre, et elle se brise à 0.
- Dans
OnCollisionEnterde la fenêtre, soustraiscollision.relativeVelocity.magnitudedestrength. - Quand
strength <= 0f, appelleDestroy(gameObject);.
Appuie sur « Jouer », lance des boules doucement avec la flèche vers le haut, puis une boule fort avec Espace : la fenêtre se brise. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Window : MonoBehaviour
{
public float strength = 10f;
// Chaque coup réduit strength de sa vitesse d’impact ; à 0, la fenêtre se brise
}
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