OnCollisionEnter
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 8 sur 63.
Lorsque deux colliders commencent à se toucher, Unity appelle OnCollisionEnter(Collision collision) dans les scripts des deux objets. Cette méthode est appelée une seule fois, lors de l’étape de physique où le contact commence, et pas à nouveau tant qu’ils restent en contact. Pour qu’une collision se produise, au moins l’un des deux doit avoir un Rigidbody déplacé par la physique : un mur et un sol sans Rigidbody ne se signalent jamais rien l’un à l’autre.
Cette caisse consigne un message lorsqu’elle atterrit. Elle possède un Rigidbody, donc elle tombe, et le message est envoyé à l’étape où elle rencontre le sol :
void OnCollisionEnter(Collision collision)
{
Debug.Log("Thud!");
}La caisse consigne un message une fois, puis de nouveau seulement après avoir quitté le sol et y avoir atterri une seconde fois. Le sol reçoit aussi le message : un script attaché à celui-ci détecterait l’atterrissage de la caisse, même si le sol n’a pas de Rigidbody. Le nom et le paramètre doivent être exacts. Une méthode nommée onCollisionEnter n’est jamais appelée, sans générer d’erreur. Une méthode qui prend un Collider fait consigner par Unity Script error: OnCollisionEnter avec This message parameter has to be of type: Collision, puis Unity l’ignore. Tant que les deux restent en contact, Unity appelle OnCollisionStay à chaque étape de physique et, lorsqu’ils se séparent, appelle OnCollisionExit une seule fois.
Défi
FacileLa plaque de pression compte ce qui tombe dessus. La plaque n’a pas de Rigidbody ; la caisse au-dessus en a un et tombe dessus.
- Chaque fois qu’un objet commence à toucher la plaque, ajoute 1 au compteur et consigne-le :
Pressed 1, puisPressed 2, et ainsi de suite. - Un objet posé sur la plaque ne compte qu’une fois, quelle que soit la durée pendant laquelle il reste dessus.
Clique sur Play et observe la Console, puis clique sur Check.
Essayez vous-même
using UnityEngine;
public class PressurePlate : MonoBehaviour
{
// Compte chaque atterrissage et affiche-le dans le journal : Pressed 1, Pressed 2, ...
}
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