Physics Materials: cómo se siente una superficie#
Un Physics Material define la fricción y el rebote de una superficie. Se crea como asset (Assets → Create → Physics Material, o Physics Material 2D en 2D) y se asigna al campo Material de un Collider.
Sus dos ajustes clave:
- Bounciness (0–1): cuánto rebota. 0 = no rebota (barro), 1 = rebote perfecto (goma). Una pelota saltarina lleva bounciness alta.
- Friction (fricción, 0–1): cuánto se agarra. 0 = hielo resbaladizo, alta = se frena enseguida.
Se asigna al Collider (Box, Sphere...), no al Rigidbody. Cuando dos superficies chocan, Unity combina sus materiales según el Friction/Bounce Combine (Average, Maximum, Minimum, Multiply): por eso una pelota de goma rebota aunque el suelo no tenga material especial, si el material de la pelota usa Combine = Maximum.
Ejemplos rápidos:
| Efecto | Bounciness | Friction |
|---|---|---|
| Pelota saltarina | 0.9 | baja |
| Caja de madera | 0 | media-alta |
| Hielo | 0 | ≈ 0 |
| Trampolín | 1 | baja |
Joints: unir objetos#
Un Joint conecta un Rigidbody a otro (o a un punto fijo del mundo) con una regla física: puede girar como una bisagra, estirarse como un muelle, colgar como una cadena... Se añaden como componente al objeto que tiene el Rigidbody.
| Joint | Une con | Sirve para |
|---|---|---|
| Fixed Joint | Rigidez total | Pegar dos objetos que se pueden romper (destructibles) |
| Hinge Joint | Un eje de giro | Puertas, palancas, ruedas, péndulos |
| Spring Joint | Un muelle elástico | Objetos que se atraen/estiran, plataformas rebotantes |
| Configurable Joint | Todo configurable | Casos complejos (ragdolls, límites por eje) |
En 2D existen los equivalentes: HingeJoint2D, SpringJoint2D, DistanceJoint2D (cuerdas), WheelJoint2D (coches 2D)...
Una puerta con Hinge Joint (sin código)#
- Pon un Rigidbody y un Hinge Joint a la puerta.
- Ajusta el Anchor (el punto de giro) al borde de la bisagra y el Axis (normalmente el eje Y para una puerta vertical).
- Opcional: activa Use Limits para que solo abra 90°, o Use Motor/Use Spring para que se abra sola o vuelva a cerrarse.
Ya tienes una puerta física que se empuja y gira, sin escribir nada.
Cadenas y cuerdas#
Encadenando varios objetos con Joints (cada eslabón unido al siguiente con un Hinge o un Spring) consigues cuerdas, cadenas y puentes colgantes que se mueven de forma realista. En 2D, DistanceJoint2D es la vía directa para una cuerda tensa; una serie de HingeJoint2D da una cadena flexible.
Muchas uniones encadenadas pueden volverse inestables o "temblar", sobre todo si las masas de los eslabones son muy distintas. Consejos: masas parecidas entre eslabones, subir los Solver Iterations en Project Settings → Physics, y no abusar del número de eslabones. La física de cadenas es potente pero delicada.
Romper joints#
Los joints tienen Break Force y Break Torque: si la fuerza supera el umbral, el joint se rompe (el objeto se suelta). Perfecto para destructibles: una estructura que se desmorona al recibir un golpe fuerte. A Infinity (por defecto) no se rompe nunca.
Errores frecuentes#
- Asignar el Physics Material al Rigidbody en vez de al Collider.
- Esperar rebote sin ajustar el Bounce Combine (si ambos materiales combinan por Average y uno es 0, casi no rebota).
- Colocar mal el Anchor de un Hinge y que la puerta gire por el sitio equivocado.
- Cadenas inestables por masas dispares o pocas iteraciones del solver.
- Mezclar joints 2D y 3D con Rigidbodies del tipo equivocado.
Ponte a prueba#
Resumen#
Los Physics Materials (en el Collider) definen rebote (bounciness) y fricción de las superficies: goma, hielo, barro. Los Joints unen Rigidbodies con reglas físicas: Hinge (bisagra: puertas, ruedas), Spring (muelle), Fixed (pegado, rompible con Break Force) y Configurable (ragdolls). Encadenados dan cuerdas y cadenas (cuidando la estabilidad). Ambos amplían lo visto en Rigidbody y Colliders.