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.
Desafío
FácilLa 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
strengthllega 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
}
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