# Colliders

Para habilitar colisiones entre un modelo 3D y los usuarios de tu escena, debes darle colliders al modelo. Sin un collider, los jugadores pueden atravesar los modelos como si no estuvieran allí. Los colliders también son necesarios para hacer que un objeto responda a los pointer events del jugador o para bloquearlos, o para ser intersectado por raycasts o bloquearlos. Por razones de rendimiento, los colliders suelen modelarse por separado como una geometría invisible más simple que tiene menos vertices que la geometría visible.

El modelo puede usar una geometría invisible como colliders, o (a partir de SDK7) puedes asignar en su lugar la geometría visible para que actúe como collider. Ver [**Colliders en modelos 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#colliders-on-3d-models) . También puedes asignar diferentes layer de collisions a las diferentes geometrías, para controlar por separado la física del jugador, los pointer events y otras capas personalizadas; ver [**Colliders en modelos 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#collision-layers) .

Los colliders no afectan cómo los modelos y las entities interactúan entre sí; siempre pueden superponerse. Los colliders solo afectan cómo el modelo interactúa con el avatar del jugador.

Para que un objeto sea reconocido por una escena de Decentraland como un collider, solo necesita estar nombrado de una cierta manera. El nombre del objeto debe incluir el sufijo “\_collider” al final.

Por ejemplo, para crear un collider para un poste de luz, puedes crear un objeto de caja simple que rodee su tronco. Los jugadores en la escena no verán esta caja, pero bloqueará su camino.

![](/files/defeac0800ed4e628ced5fcf7e8b5bf847bbf468)

En este caso, podemos nombrar la caja “LampPost*collider” y exportar tanto el árbol como la caja como un único modelo \_\_gltf. La etiqueta \*\_\_collider*\* alerta al motor de mundos de Decentraland de que el objeto caja pertenece a la colección de colliders, haciendo que la mesh del collider sea invisible.

Siempre que un jugador vea el modelo del poste de luz en tu escena, verá el modelo complejo de tu lámpara. Sin embargo, cuando entre en él, chocará con la caja, no con el árbol.

## Restricciones espaciales del jugador

Cuando diseñes modelos que estén pensados para que los jugadores caminen alrededor de ellos, debes tener en cuenta las siguientes medidas de referencia:

* Los jugadores pueden subir un escalón de hasta 30 centímetros de altura sin saltar
* Los jugadores pueden subir pendientes de hasta 45 grados sin saltar
* Los jugadores pueden saltar hasta 1,8 metros de altura
* Los avatares miden alrededor de 1,9 metros de altura, pero considera que podrían tener sombreros u otros wearables en la cabeza.

Siempre que un jugador vea el modelo del árbol en tu escena, verá el modelo complejo de tu árbol. Sin embargo, cuando entre en tu árbol, chocará con la caja, no con el árbol.

### Añadir un Collider a una escalera

Las escaleras son un caso de uso muy común para objetos collider. Para que los jugadores puedan subir escaleras, debe haber un objeto \_collider correspondiente sobre el que los jugadores puedan pisar.

Recomendamos usar un objeto rampa para tus colliders de escaleras; esto proporciona una experiencia mucho mejor al subir o bajar. Cuando suban tus escaleras, se verá como un ascenso o descenso suave, en lugar de requerir que “salten” cada escalón individual.

Usar un objeto rampa también evita crear geometría innecesaria, dejando espacio para otros modelos más complicados. Ten en cuenta que la geometría del collider también se tiene en cuenta al calcular el [**limitaciones de la scene**](https://docs.decentraland.org/creator/development-guide/scene-limitations/)

1. Crea un nuevo objeto con la forma de una rampa que se parezca al tamaño y las proporciones de las escaleras originales.

![](/files/407d56cf215fb11e78f59bc19f3a979ba7154752)

2. Nombra el objeto rampa algo similar a S*tair\_collider*. Debe terminar en \_*collider*.
3. Superpone el objeto rampa sobre las escaleras para que ocupen el mismo espacio.

![](/files/0d8845de1ad6e0602313af4816e350496da2b23d)

4. Exporta ambos objetos juntos como un único *glTF* modelo.

Ahora, cuando los jugadores vean las escaleras en tu escena, verán el modelo más elaborado de las escaleras, pero cuando las suban, chocarán con la rampa.

## Optimización de colliders

* Prefiere usar **Box**, **Sphere** y **Capsule** mesh de colisión, porque tendrá mejor rendimiento al cargar y en tiempo de ejecución.
* Considera aproximar una mesh de colisión compleja mediante varias Primitive collision meshes (**Box**/**Sphere**/**Capsule**)

![](/files/900e8f98947aab9583c9831ac118628160961de2)

*Ejemplo: el collider para un anillo puede componerse de varios colliders Capsule o Box*

* Coloca la mesh de colisión dentro de la jerarquía del objeto al que está relacionada. Por ejemplo, Spaceship\_collider puede ser un hijo dentro del padre Spaceship (desde el punto de vista de la jerarquía)

### Colliders convexos vs cóncavos

Si usar un collider de mesh arbitrario es la única posibilidad, entonces haz que la mesh de colisión sea Convex (no Concave). Esto evitará situaciones físicas extrañas, como tartamudeo, quedarse atascado dentro del collider o atravesarlo. Ten en cuenta que a menudo es posible imitar una mesh cóncava con varias meshes convexas.

![](/files/760f206a7550a53e053e87fd7eae24ff61a47956)

## Nomenclatura de colisión

**Usa nombres significativos. El nombre debe dar contexto de dónde se usa el asset o a qué parte del objeto se relaciona.**

Para la nomenclatura de assets usamos una mezcla de `PascalCase` y `snake_case`, que podemos llamar `PascalSnake_case`. Las reglas básicas ahí son: una nueva palabra o una palabra después de un separador (`_`) comienza con **una letra mayúscula.**

Collision Mesh es la mesh que se usa como referencia para crear un collider en el Explorer

* Sigue los mismos principios que las Meshes anteriores, pero tiene `_collider` un sufijo al final **Ejemplos:** 🟢 **Prefiere** nombres - `Tram_Wheel_LeftFront_collider` 🔴 **Evita** nombres - `Primitive.001_Collider`, `collider (1)`, `Cylinder.007_collider`,

{% hint style="warning" %}
**🔥Consejo de optimización🔥**

Si un collider puede aproximarse por una forma Box, Sphere o Capsule, entonces usa un sufijo adicional con una de estas 3 variantes posibles \_box, \_sphere o \_capsule. Usar estas 3 formas en lugar de una mesh arbitraria para la detección de colisiones aumentará el rendimiento de tu escena y el tiempo de carga 💪🚀

Ejemplos: 🟢 Teater\_MainWall\_North\_collider\_box, Fountain\_Statue\_collider\_sphere
{% endhint %}

## Buenas prácticas para colliders

* **Usa siempre el menor número posible de triángulos al crear colliders.** Evita hacer una copia de un objeto complejo para usarlo como collider. Los colliders simples garantizan una buena experiencia de usuario y mantienen tu escena dentro de las limitaciones de triángulos.
* **Los objetos collider no deberían tener ningún material**, ya que los jugadores de tu escena nunca lo verán. Los colliders son invisibles para los jugadores.
* **Todos los nombres de objetos collider deben terminar con \_*****collider*****.** Por ejemplo, T*ree\_collider*.
* **Si usas un \_plane**\_\*\* como collider, solo bloqueará en una dirección.\*\* Si quieres que los colliders bloqueen desde ambos lados, por ejemplo para una pared, necesitas crear dos planes con sus normales orientadas en direcciones opuestas.
* Al duplicar objetos collider, presta atención a sus nombres. Algunos programas añaden un \_*1* al final del nombre del archivo para evitar duplicados, por ejemplo *tree\_collider\_1*. Los objetos que se nombren así serán interpretados por el Decentraland World Engine como objetos normales, no como colliders.
* Puedes evitar añadir una mesh collider si añades un `MeshCollider` componente invisible a la entity, que aproxime la forma del modelo 3D.
* También puedes evitar añadir una mesh collider si configuras el `GLTFContainer` componente para usar la geometría visible como collider. Ver [**Colliders en modelos 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#colliders-on-3d-models) .
* Si estás creando un modelo 3D con muchas formas de mesh que cada una necesita su collider, hay algunos add-ons útiles que pueden ayudar. Para Blender puedes usar la opción de cambiar nombres por lotes dentro de Blender \*\*\*\*para añadir automáticamente un `_collider` sufijo a todos los nombres de mesh en un grupo. Más sobre esta herramienta en la sección “**Usar Blender para renombrar assets”**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-es/modelado-3d-y-animaciones/colliders.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
