Tres formas de romper cosas
| Enfoque | Coste en runtime | Aspecto | Úsalo para |
|---|---|---|---|
| Cambiar por pedazos prefracturados | Bajo | Pedazos reales, iguales cada vez | Cajas, jarrones, estatuas, paredes |
| Cortar la malla en runtime | Alto | Cortes únicos | Cortar con espada como mecánica central |
| Partículas + ocultar el objeto | El más bajo | Sin pedazos reales | Objetos pequeños, lejanos o rápidos |
Para la mayoría de los juegos, cambiar es la respuesta. El resto de esta guía lo construye.
1. Haz los pedazos
Divide la malla en fragmentos de antemano. En Blender, el add-on Cell Fracture lo hace; también puedes generar los pedazos dentro de Unity con una herramienta de editor. Pon los pedazos bajo un padre, añade un MeshCollider (convexo) y un Rigidbody a cada uno y guárdalo como prefab.
2. Cambia al impactar
using UnityEngine;
public class Breakable : MonoBehaviour
{
public GameObject brokenPrefab;
public float breakSpeed = 4f; // impact speed needed to break
public float force = 300f, radius = 1.5f;
public float piecesLifetime = 8f;
void OnCollisionEnter(Collision c)
{
if (c.relativeVelocity.magnitude >= breakSpeed)
Break(c.GetContact(0).point);
}
public void Break(Vector3 point)
{
var broken = Instantiate(brokenPrefab, transform.position, transform.rotation);
foreach (var rb in broken.GetComponentsInChildren<Rigidbody>())
rb.AddExplosionForce(force, point, radius);
Destroy(broken, piecesLifetime);
Destroy(gameObject);
}
}Llama también a Break desde el código de tus armas, para que las balas y explosiones rompan objetos sin una colisión física.
3. Mantenlo rápido
- Elimina los pedazos tras unos segundos, o encógelos, para que los cuerpos de física no se acumulen.
- Pon los pedazos en una capa que no colisione con el jugador, para que los escombros nunca bloqueen el movimiento.
- Usa pooling con los prefabs rotos de objetos que se rompen a menudo (botellas en un shooter).
- Menos pedazos, más grandes, se leen mejor en los estilos low poly y PSX, y cuestan menos.
Ya hecho: el Sistema de Fractura
El Sistema de Fractura para Unity añade un botón Bake Fracture al Inspector (número de pedazos y semilla), rompe por colisión o desde código, tiene ajustes de explosión y fuerza direccional y grupos de fractura para romper un objeto de varias partes a la vez. Combínalo con el Blocky Arsenal o el pack militar PSX para tener con qué disparar, y con los Dungeon Props para cosas que valga la pena romper.
Preguntas frecuentes
Cambia a los pedazos en el momento de romper: hornea la pose actual con SkinnedMeshRenderer.BakeMesh si lo necesitas y luego fractura eso. Para la mayoría de los props, las mallas estáticas bastan.
Los colisionadores solapados se empujan entre sí. Encoge un poco los colisionadores de los pedazos o hazlos convexos y sin solapamiento, y genera los pedazos con velocidad inicial cero antes de aplicar la fuerza.
Quién lo escribió
Imersa Studios crea los sistemas Unity, los packs low poly y las guías que se venden en itch.io. El código y las técnicas de aquí salen de publicar esos productos. Más sobre el estudio.



