Colliders

Aprende cómo añadir Colliders a modelos 3D importados a Decentraland.

Para habilitar colisiones entre un modelo 3D y los usuarios de tu scene, debes dotar al modelo de colliders. Sin un collider, los jugadores pueden atravesar los modelos como si no estuvieran allí. Los colliders también son necesarios para que un objeto responda a los pointer events del jugador o los bloquee, o para que lo intersecten raycasts o lo bloqueen. Por razones de rendimiento, los colliders a menudo se modelan por separado como una geometría invisible más simple que tiene menos vertices que la geometría visible.

💡 Consejo: Instala el plugin Blender de Decentraland Tools. Incluye varias funciones útiles para ayudarte a editar y exportar modelos 3D, wearables y emotes.

El modelo puede usar una geometría invisible como colliders, o (a partir de SDK7) puedes asignar la geometría visible para que actúe como collider. Ver Colliders en modelos 3D . También puedes asignar diferentes layers de collisions a las distintas geometrías, para controlar por separado la física del jugador, los pointer events y otras layers personalizadas, ver Colliders en modelos 3D .

Los Colliders no afectan cómo interactúan entre sí los modelos y Entities; 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 scene de Decentraland como un collider, solo necesita estar nombrado de 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 caja simple que rodee su tronco. Los jugadores en la scene no verán esta caja, pero bloqueará su camino.



En este caso, podemos nombrar la caja “LampPostcollider” y exportar tanto el árbol como la caja como un único modelo __gltf. La *__collider* etiqueta avisa al world engine de Decentraland de que el objeto caja pertenece a la colección de colliders, haciendo invisible el mesh del collider.

Cada vez que un jugador vea el modelo del poste de luz en tu scene, verá el modelo complejo de tu lámpara. Sin embargo, cuando choquen contra él, colisionarán con la caja, no con el árbol.

Restricciones espaciales del jugador

Cuando diseñes modelos pensados para que los jugadores caminen alrededor, 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 con un ángulo de hasta 45 grados sin saltar

  • Los jugadores pueden saltar hasta 1,8 metros de altura

  • Los Avatars miden alrededor de 1,9 metros de altura, pero considera que podrían llevar hats u otros wearables en la cabeza.

Cada vez que un jugador vea el modelo del árbol en tu scene, verá el modelo complejo de tu árbol. Sin embargo, cuando entren en tu árbol, colisionarán 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 los objetos collider. Para que los jugadores puedan subir escaleras, debe existir un objeto _collider correspondiente sobre el que los jugadores puedan pisar.

Recomendamos usar un objeto rampa para tus stair colliders; esto proporciona una experiencia mucho mejor al subir o bajar. Al subir tus escaleras, parecerá un ascenso o descenso suave, en lugar de obligarles a “saltar” 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 toma en cuenta al calcular las limitaciones de la scene

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


  1. Nombra el objeto rampa algo similar a Stair_collider. Debe terminar en _collider.

  2. Superpone el objeto rampa sobre las escaleras para que ocupen el mismo espacio.


  1. Exporta ambos objetos juntos como un único glTF modelo.

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

Optimización de Colliders

  • Prefiere usar Box, Sphere y Capsule collision meshes, porque tendrá mejor rendimiento al cargar y en tiempo de ejecución.

  • Considera aproximar un collision mesh complejo mediante varios collision meshes Primitive (Box/Sphere/Capsule)



Ejemplo: un collider para Ring puede componerse de varios colliders Capsule o Box

  • Coloca el collision mesh dentro de la Hierarchy del objeto con el que está relacionado. Por ejemplo, Spaceship_collider puede ser un hijo dentro del padre Spaceship (desde el punto de vista de la Hierarchy)

Colliders convexos vs cóncavos

Si usar un collider de mesh arbitrario es la única posibilidad, entonces haz el collision mesh convexo (no cóncavo). Esto evitará situaciones físicas extrañas, como tirones, quedarse atascado dentro del collider o atravesarlo. Ten en cuenta que a menudo es posible imitar un mesh cóncavo mediante varios meshes convexos.



Nomenclatura de Colliders

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

Para nombrar assets usamos una mezcla de PascalCase y snake_case, a lo que podemos llamar PascalSnake_case. Las reglas básicas allí: una palabra nueva o una palabra después de un separador (_) empieza con letra mayúscula.

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

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

Mejores prácticas para Colliders

  • Usa siempre el menor número posible de triangles 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 scene dentro de las limitaciones de triangles.

  • Los objetos collider no deberían tener ningún material, ya que los jugadores de tu scene nunca lo verán. Los Colliders son invisibles para los jugadores.

  • Todos los nombres de los objetos collider deben terminar con _collider. Por ejemplo, Tree_collider.

  • Si usas un _planecomo 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 Normals orientadas en direcciones opuestas.

  • Al duplicar objetos collider, presta atención a sus nombres. Algunos programas añaden un _1 al final del nombre de archivo para evitar duplicados, por ejemplo tree_collider_1. Los objetos nombrados así serán interpretados por el Decentraland World Engine como objetos normales, no como colliders.

  • Puedes evitar añadir un collider mesh si añades un componente invisible MeshCollider a la Entity, que aproxime la forma del modelo 3D.

  • También puedes evitar añadir un collider mesh si configuras el GLTFContainer componente para usar la geometría visible como collider. Ver Colliders en modelos 3D .

  • Si estás creando un modelo 3D con muchas formas mesh que cada una necesita su collider, hay algunos add-ons prácticos que pueden ayudar. Para Blender puedes usar la opción de cambio de nombre por lotes dentro de Blender ****para añadir automáticamente un _collider sufijo a todos los nombres de mesh de un grupo. Más sobre esta herramienta en “Usar Blender para renombrar assets” sección

Última actualización