Cosa ho colpito?
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 9 di 63.
Collision che Unity passa a OnCollisionEnter descrive l'altra parte del contatto. collision.gameObject è l'oggetto contro cui ti sei scontrato, quindi collision.gameObject.name è il suo nome e collision.gameObject.CompareTag("Hazard") ne controlla il tag. (collision.collider è il collider preciso che hai toccato, quando un oggetto ne ha diversi.)
Questa macchinina registra tutto ciò contro cui urta e si lamenta dei pericoli:
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 controlla sempre per prima cosa contro cosa ha urtato. Fai attenzione a quale oggetto indichi: CompareTag("Hazard") da solo controlla il tag del tuo oggetto, e Destroy(gameObject) distrugge il tuo oggetto, mentre Destroy(collision.gameObject) rimuove quello contro cui hai urtato.
Sfida
FacileGuida lo spazzaneve con le frecce (già scritte) e assegnagli un compito. I due blocchi bianchi hanno il tag Snow.
- Quando lo spazzaneve urta un oggetto con il tag
Snow, distruggi quel blocco, aggiungi 1 al conteggio e registralo:Cleared 1,Cleared 2. - Tutto il resto che lo spazzaneve tocca, compresi il terreno e il muro, resta al suo posto.
Premi Gioca e libera la strada, poi Controlla.
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 incontrata dallo spazzaneve: distruggila, conteggiala e registra il totale
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
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 rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere