Qu’est-ce que j’ai touché ?
Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 9 sur 71.
La Collision que Unity transmet à OnCollisionEnter décrit l’autre côté du contact. collision.gameObject est l’objet que tu as heurté : collision.gameObject.name est donc son nom, et collision.gameObject.CompareTag("Hazard") vérifie son tag. (collision.collider désigne le collider précis que tu as touché, lorsqu’un objet en possède plusieurs.)
void OnCollisionEnter(Collision collision)
{
Debug.Log("Bumped into " + collision.gameObject.name);
if (collision.gameObject.CompareTag("Hazard"))
{
Debug.Log("Ouch!");
}
}La première ligne qu’elle consigne est Bumped into Floor, dès le début du jeu : le sol sur lequel elle se trouve compte aussi comme une collision. Un script qui réagit aux chocs vérifie donc toujours d’abord ce qu’il a heurté. Fais attention à l’objet que tu désignes : CompareTag("Hazard") tout seul vérifie le tag de ton propre objet, et Destroy(gameObject) détruit ton propre objet, tandis que Destroy(collision.gameObject) supprime celui que tu as heurté.
Défi
FacileDonne un rôle au chasse-neige : déblayer les blocs étiquetés Snow.
- Ajoute
void OnCollisionEnter(Collision collision)àPlow, en agissant uniquement lorsquecollision.gameObject.CompareTag("Snow"). - À l’intérieur, exécute
Destroy(collision.gameObject);, ajoute 1 à un champclearedet consigne"Cleared " + cleared.
Appuie sur « Jouer » et fonce dans la neige : chaque bloc disparaît et la Console les compte. Puis clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Plow : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
private int cleared;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, 0);
}
// Neige rencontrée par le chasse-neige : la détruire, la compter et afficher le total dans le journal
}
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