Menu
CoddyTech

¿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.

challenge icon

Desafío

Fácil

Conduce 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
}
quiz iconPonte a prueba

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