Menu
CoddyTech

Romper al impactar

Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 10 de 63.

¿Qué tan fuerte fue el impacto? collision.relativeVelocity indica a qué velocidad se acercaban los dos objetos en el momento en que chocaron, y su magnitude es la velocidad del impacto en m/s. Es una diferencia de velocidades: un auto que va a 10 m/s y choca contra un auto que va en la misma dirección a 8 m/s impacta a solo 2 m/s, y ambos autos registran la misma velocidad de impacto.

Este huevo se rompe cuando cae a una velocidad superior a crackSpeed. Si se deja caer desde 1 m, impacta a unos 4.4 m/s (la raíz cuadrada de 2 x 9.81 x 1), y desde 2 m, a unos 6.3 m/s:

public float crackSpeed = 5f;

void OnCollisionEnter(Collision collision)
{
    if (collision.relativeVelocity.magnitude > crackSpeed)
    {
        Debug.Log("Splat!");
        Destroy(gameObject);
    }
}

¿Por qué no usar la rb.linearVelocity propia del huevo? Para cuando se ejecuta OnCollisionEnter, la física ya ha procesado el impacto, así que la velocidad del huevo es la que queda después, casi cero. relativeVelocity conserva la velocidad del impacto en sí. Es una velocidad, así que la masa no influye: un huevo pesado y uno ligero que caen a 6 m/s registran ambos 6.

challenge icon

Desafío

Fácil

La bola rueda hacia la ventana: la flecha hacia arriba la hace rodar suavemente, la barra espaciadora la hace rodar con fuerza (Bowler.cs, ya escrito). Escribe Window.cs. La ventana tiene una strength (10 en el Inspector).

  • Cada impacto debilita la ventana según su velocidad de impacto: un impacto a 2 m/s resta 2 a strength.
  • Cuando strength llega a 0 o menos, la ventana se rompe: destruye la ventana.

Pulsa Play, haz rodar unas cuantas bolas suaves y después una fuerte, y luego pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class Window : MonoBehaviour
{
    public float strength = 10f;

    // Cada golpe resta su velocidad de impacto a strength; al llegar a 0, la ventana se rompe
}
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