¿Qué golpeé?
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 9 de 63.
El Collision que Unity pasa a OnCollisionEnter describe el otro lado del contacto. collision.gameObject es el objeto con el que chocaste, así que collision.gameObject.name es su nombre, y collision.gameObject.CompareTag("Hazard") comprueba su etiqueta. (collision.collider es el collider exacto que tocaste, cuando un objeto tiene varios.)
Este auto de choque registra todo aquello con lo que choca y se queja de los peligros:
void OnCollisionEnter(Collision collision)
{
Debug.Log("Bumped into " + collision.gameObject.name);
if (collision.gameObject.CompareTag("Hazard"))
{
Debug.Log("Ouch!");
}
}La primera línea que registra es Bumped into Floor, justo cuando empieza el juego: el suelo sobre el que está también cuenta como una colisión. Así que un script que reacciona a los golpes siempre pregunta primero qué golpeó. Fíjate a qué objeto haces referencia: CompareTag("Hazard") por sí solo comprueba la etiqueta de tu propio objeto, y Destroy(gameObject) destruye tu propio objeto, mientras que Destroy(collision.gameObject) elimina el objeto con el que chocaste.
Desafío
FácilConduce el quitanieves con las flechas (ya está escrito) y asígnale una tarea. Los dos bloques blancos tienen la etiqueta Snow.
- Cuando el quitanieves choque con un objeto etiquetado
Snow, destruye ese bloque, suma 1 a un contador y regístralo:Cleared 1,Cleared 2. - Todo lo demás que toque el quitanieves, incluido el suelo y la pared, permanece en su sitio.
Pulsa Play y despeja la carretera; después, Check.
Pruébalo tú mismo
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);
}
// Nieve con la que choca el quitanieves: destrúyela, cuéntala y registra el total
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Física y jugabilidad
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de monedas
La bola rodanteMonedas para recoger