Colliders

Aprende cómo agregar colliders a modelos 3D importados a Decentraland.

Para habilitar colisiones entre un modelo 3D y los usuarios de tu escena, debes darle colliders al modelo. Sin un collider, los jugadores pueden caminar a través de 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 para bloquearlos, o para ser intersectados por raycasts o bloquearlos. Por razones de rendimiento, los colliders a menudo se modelan por separado como una geometría invisible más simple que tiene menos vértices que la geometría visible.

El modelo puede usar una geometría invisible como colliders, o (a partir de SDK7) en su lugar puedes asignar que la geometría visible se comporte como un collider. Ver Colliders en modelos 3Darrow-up-right . También puedes asignar diferentes capas de colisión a las distintas geometrías, para controlar por separado la física del jugador, los pointer events y otras capas personalizadas, ver Colliders en modelos 3Darrow-up-right .

Los colliders no afectan cómo los modelos y entidades 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, todo lo que necesita es llamarse de cierta manera. El nombre del objeto debe incluir el sufijo “_collider” al final.

Por ejemplo, para crear un collider para un farol puedes crear un objeto caja simple que rodee su tronco. Los jugadores en la escena 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 etiqueta *__collider* alerta al motor del mundo de Decentraland que el objeto caja pertenece a la colección de colliders, haciendo que la malla del collider sea invisible.

Siempre que un jugador vea el modelo del farol en tu escena, verá el modelo complejo de tu farol. Sin embargo, cuando choquen contra él, colisionarán con la caja, no con el árbol.

Restricciones Espaciales del Jugador

Cuando diseñas modelos por los que se supone que los jugadores deben caminar, necesitas 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 avatares miden alrededor de 1,9 metros de altura, pero ten en cuenta que pueden llevar 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 choquen con tu árbol, colisionarán con la caja, no con el árbol.

Agregar 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 existir un objeto _collider correspondiente sobre el que los jugadores puedan poner el pie.

Recomendamos usar un objeto rampa para tus colliders de escalera; esto proporciona una experiencia mucho mejor al subir o bajar. Cuando suban tus escaleras, parecerá un ascenso o descenso suave, en lugar de requerir que “salten” cada peldaño individual.

Usar un objeto rampa también evita crear geometría innecesaria, ahorrando espacio para otros modelos más complejos. Ten en cuenta que la geometría del collider también se toma en cuenta al calcular el limitaciones de la escenaarrow-up-right

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


  1. Nombra el objeto rampa con 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 escena, verán el modelo más elaborado de las escaleras, pero cuando las suban, colisionarán con la rampa.

Optimizando Colliders

  • Prefiere usar Box, Sphere y Capsule meshas de colisión, porque será más eficiente en la carga y en tiempo de ejecución.

  • Considera aproximar una malla de colisión compleja por varias mallas de colisión primitivas (Box/Sphere/Capsule)



Ejemplo: El collider para un anillo puede componerse de varias colisiones Capsule o Box

  • Coloca la malla 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 una malla de collider arbitraria es la única posibilidad, entonces haz la malla de colisión Convex (no Concave). Evitará situaciones físicas extrañas, como tartamudeos, quedarse atascado dentro del collider o atravesarlo. Ten en cuenta que a menudo es posible imitar una malla cóncava con varias mallas convexas.



Nombrado de Colisiones

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

Para el nombrado de assets usamos una mezcla de PascalCase y snake_case, que podemos llamar PascalSnake_case. Las reglas básicas son: nueva palabra o palabra después de un separador (_) comienza con Letra mayúscula.

Collision Mesh es la malla que se utiliza como referencia para crear un collider en el Explorer

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

circle-exclamation

Mejores Prácticas Para Colliders

  • Siempre usa el menor número de triángulos posible al crear colliders. Evita hacer una copia de un objeto complejo para usarlo como collider. 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 los objetos collider deben terminar con _collider. Por ejemplo, Tree_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 planos con sus normales mirando en direcciones opuestas.

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

  • Puedes evitar agregar una malla collider si añades un invisible MeshCollider component a la entidad, que aproxime la forma del modelo 3D.

  • También puedes evitar añadir una malla collider si configuras el GLTFContainer component para usar la geometría visible como collider. Ver Colliders en modelos 3Darrow-up-right .

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

Última actualización