> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-pt/modelacao-3d-e-animacoes/colliders.md).

# Colliders

Saiba como adicionar colliders a modelos 3D importados para o Decentraland.

Para habilitar colisões entre um modelo 3D e os usuários da sua scene, você precisa dar colliders ao modelo. Sem um collider, os players conseguem atravessar os modelos como se eles não estivessem lá. Colliders também são necessários para fazer um objeto responder aos pointer events do player ou bloqueá-los, ou para ser intersectado por raycasts ou bloqueá-los. Por motivos de desempenho, os colliders costumam ser modelados separadamente como uma geometria invisível mais simples, que tem menos vertices do que a geometria visível.

{% hint style="info" %}
**💡 Dica**: Instale o [plugin Decentraland Tools Blender](https://extensions.blender.org/add-ons/decentraland-tools/). Inclui várias funções úteis para o ajudar a editar e exportar modelos 3D, wearables e Emotes.
{% endhint %}

O modelo pode usar uma geometria invisível como colliders, ou (a partir do SDK7) você pode, em vez disso, atribuir à geometria visível o comportamento de um collider. Consulte [**Colliders em modelos 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#colliders-on-3d-models) . Você também pode atribuir diferentes layers de colisão às diferentes geometrias, para controlar separadamente a física do player, pointer events e outras layers personalizadas, veja [**Colliders em modelos 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#collision-layers) .

Colliders não afetam como models e entities interagem entre si; eles sempre podem se sobrepor. Colliders afetam apenas como o model interage com o avatar do player.

Para que um objeto seja reconhecido por uma scene da Decentraland como um collider, tudo o que ele precisa é ser nomeado de uma certa forma. O nome do objeto deve incluir o sufixo “\_collider” no final.

Por exemplo, para criar um collider para um poste de luz, você pode criar um objeto simples em forma de caixa ao redor do seu tronco. Os players na scene não verão essa caixa, mas ela bloqueará o caminho deles.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-0d12445032edb8460857129dfe4a6c0d755b79be%2F25-collider.png?alt=media\&token=dcb5f7c4-be34-4523-81f8-e2773196a24d)

Nesse caso, podemos nomear a caixa “LampPost*collider” e exportar tanto a árvore quanto a caixa como um único modelo \_\_gltf. A tag \*\_\_collider*\* avisa ao world engine da Decentraland que o objeto caixa pertence à coleção de colliders, tornando a mesh do collider invisível.

Sempre que um player visualizar o modelo do poste de luz na sua scene, ele verá o modelo complexo do seu poste de luz. No entanto, quando ele entrar nele, vai colidir com a caixa, não com a árvore.

## Restrições Espaciais do Player

Ao projetar models que devem ser usados por players para andar por aí, você precisa ter em mente as seguintes medidas de referência:

* Players podem subir um degrau de até 30 centímetros de altura sem saltar
* Players podem subir inclinações de até 45 graus sem saltar
* Players podem saltar até 1,8 metros de altura
* Avatars medem cerca de 1,9 metros de altura, mas considere que eles podem ter hats ou outros wearables na cabeça.

Sempre que um player visualizar o modelo da árvore na sua scene, ele verá o modelo complexo da sua árvore. No entanto, quando entrar na árvore, ele vai colidir com a caixa, não com a árvore.

### Adicionar um Collider a uma escada

Escadas são um caso de uso muito comum para objetos collider. Para que os players consigam subir escadas, deve existir um objeto \_collider correspondente sobre o qual os players possam pisar.

Recomendamos usar um objeto em forma de rampa para os seus colliders de escada; isso proporciona uma experiência muito melhor ao subir ou descer. Quando eles subirem as suas escadas, isso parecerá uma subida ou descida suave, em vez de exigir que “saiam saltando” por cada degrau individualmente.

Usar um objeto em forma de rampa também evita criar geometria desnecessária, deixando espaço para outros models mais complicados. Tenha em mente que a geometria do collider também é levada em conta ao calcular o [**limitações da scene**](https://docs.decentraland.org/creator/development-guide/scene-limitations/)

1. Crie um novo objeto em forma de rampa que se assemelhe ao tamanho e às proporções da escada original.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-680fdc067ef8fcd1c4d80d31710709b558e7c067%2F26-collider-2.png?alt=media\&token=e197970c-6e79-412d-b480-7a0ebeef8ba3)

2. Nomeie o objeto de rampa com algo parecido com S*tair\_collider*. Ele deve terminar em \_*collider*.
3. Sobreponha o objeto de rampa às escadas para que ocupem o mesmo espaço.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-71a830ef0313ecf3d6b5232ecc2e742ce5bdc46a%2F27-collider.png?alt=media\&token=e25bc179-b5e7-4702-ac25-4ebc891a04dd)

4. Exporte ambos os objetos juntos como um único *glTF* model.

Agora, quando os players visualizarem as escadas na sua scene, eles verão o modelo mais elaborado das escadas, mas quando subirem nelas, vão colidir com a rampa.

## Otimizando Colliders

* Prefira usar **Box**, **Sphere** e **Capsule** collision meshes, porque isso terá melhor desempenho no carregamento e em runtime.
* Considere aproximar a collision mesh complexa com várias Primitive collision meshes (**Box**/**Sphere**/**Capsule**)

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-8f2976bacdcec721dd9dc34b023f2e006f33e4d7%2F28-optimizing-colliders.png?alt=media\&token=81bcf3dd-540e-4baf-817f-e3df19a890f7)

*Exemplo: um collider para Ring pode ser composto por vários colliders Capsule ou Box*

* Coloque a collision mesh dentro da Hierarchy do objeto ao qual ela está relacionada. Por exemplo, Spaceship\_collider pode ser um filho dentro do pai Spaceship (do ponto de vista da Hierarchy)

### Colliders Convexos vs Côncavos

Se usar um collider de mesh arbitrária for a única possibilidade, então torne a collision mesh Convex (não Concave). Isso evitará situações físicas estranhas, como tremores, ficar preso dentro do collider ou atravessá-lo. Observe que muitas vezes é possível imitar uma mesh côncava com várias meshes convexas.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-33cc04ac9bf25f8d342724d7a4760b78a48bcabf%2F29-convex-collider.png?alt=media\&token=ec3da8ea-0b06-474a-99f3-309e05dbdaba)

## Nomeação de Collision

**Use nomes significativos. O nome deve dar contexto de onde o asset é usado ou a qual parte do objeto ele se relaciona.**

Para nomeação de assets, usamos uma mistura de `PascalCase` e `snake_case`, que podemos chamar de `PascalSnake_case`. As regras básicas aí são: uma nova palavra ou uma palavra depois de um separador (`_`) começa com **letra maiúscula.**

Collision Mesh é a mesh usada como referência para criar um collider no Explorer

* Segue os mesmos princípios das Meshes acima, mas tem `_collider` um sufixo no final **Exemplos:** 🟢 **Prefere** dos nomes - `Tram_Wheel_LeftFront_collider` 🔴 **Evita** dos nomes - `Primitive.001_Collider`, `collider (1)`, `Cylinder.007_collider`,

{% hint style="warning" %}
**🔥Dica de otimização🔥**

Se um collider puder ser aproximado por uma forma Box, Sphere ou Capsule, então use um sufixo adicional com uma destas 3 variações possíveis \_box, \_sphere ou \_capsule. Usar estas 3 formas em vez de uma mesh arbitrária para detecção de colisão aumentará o desempenho da sua scene e o tempo de carregamento 💪🚀

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

## Melhores Práticas Para Colliders

* **Use sempre o menor número possível de triangles ao criar colliders.** Evite fazer uma cópia de um objeto complexo para usar como collider. Colliders simples garantem uma boa experiência de usuário e mantêm sua scene dentro das limitações de triangles.
* **Objetos collider não devem ter nenhum material**, já que os players da sua scene nunca o verão. Colliders são invisíveis para os players.
* **Todos os nomes dos objetos collider devem terminar com \_*****collider*****.** Por exemplo, T*ree\_collider*.
* **Se você usar um \_plane**\_\*\* como collider, ele bloqueará apenas em uma direção.\*\* Se você quiser que colliders bloqueiem dos dois lados, por exemplo, para uma parede, você precisa criar dois planes com suas normais voltadas em direções opostas.
* Ao duplicar objetos collider, preste atenção aos seus nomes. Alguns programas acrescentam um \_*1* ao final do nome do arquivo para evitar duplicatas, por exemplo *tree\_collider\_1*. Objetos nomeados assim serão interpretados pelo Decentraland World Engine como objetos normais, não como colliders.
* Você pode evitar adicionar uma collider mesh se adicionar um `MeshCollider` component invisível à entity, que aproxima a forma do modelo 3D.
* Você também pode evitar adicionar uma collider mesh se configurar o `GLTFContainer` component para usar a geometria visível como um collider. Consulte [**Colliders em modelos 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#colliders-on-3d-models) .
* Se você estiver criando um modelo 3D com muitas mesh shapes que cada uma precise do seu collider, há alguns add-ons úteis que podem ajudar. Para o Blender, você pode usar a opção de renomeação em lote dentro do Blender \*\*\*\*para adicionar automaticamente um `_collider` sufixo a todos os nomes das mesh em um grupo. Mais sobre esta ferramenta na seção “**Usando o Blender para renomear assets” section**


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-pt/modelacao-3d-e-animacoes/colliders.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
