Cosa ho colpito?
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 9 di 71.
Collision che Unity passa a OnCollisionEnter descrive l’altra parte del contatto. collision.gameObject è l’oggetto contro cui sei andato a sbattere, quindi collision.gameObject.name è il suo nome e collision.gameObject.CompareTag("Hazard") ne verifica il tag. (collision.collider è il collider esatto che hai toccato, quando un oggetto ne ha diversi.)
Questa autoscontro registra tutto ciò contro cui urta e si lamenta degli oggetti pericolosi:
void OnCollisionEnter(Collision collision)
{
Debug.Log("Bumped into " + collision.gameObject.name);
if (collision.gameObject.CompareTag("Hazard"))
{
Debug.Log("Ouch!");
}
}La prima riga che registra è Bumped into Floor, nel momento in cui il gioco inizia: anche il pavimento su cui si trova è una collisione. Quindi, uno script che reagisce agli urti verifica sempre prima contro cosa ha urtato. Fai attenzione a quale oggetto indichi: CompareTag("Hazard") da solo verifica il tag del tuo oggetto, mentre Destroy(gameObject) distrugge il tuo oggetto e Destroy(collision.gameObject) rimuove quello contro cui hai urtato.
Sfida
FacileAssegna un compito allo spazzaneve: rimuovi i blocchi contrassegnati con Snow.
- Aggiungi
void OnCollisionEnter(Collision collision)aPlow, in modo che agisca solo quandocollision.gameObject.CompareTag("Snow"). - All'interno,
Destroy(collision.gameObject);, incrementa di 1 un campoclearede registra"Cleared " + cleared.
Premi «Gioca» e guida nello snow: ogni blocco scompare e la Console lo conta. Poi premi «Verifica».
Provalo tu
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);
}
// Neve contro cui va a sbattere lo spazzaneve: distruggila, contala e registra il conteggio nel log
}
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia7Rotazione
Angoli di EuleroQuaternioniGuarda nella direzione in cui ti muoviRuota in modo fluidoRiepilogo: Torretta10Progetto: Fuga dall'arena
L'arenaCacciatori2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliereEsercitati da solo: Playground Unity