# Colliders

Para Enable colisões entre um modelo 3D e os utilizadores da sua cena, tem de dar ao modelo colliders. Sem um collider, os jogadores conseguem atravessar os modelos como se eles não estivessem lá. Os colliders também são necessários para fazer um objeto responder aos pointer events do jogador ou bloqueá-los, ou para ser intercetado por raycasts ou bloqueá-los. Por razões de desempenho, os colliders são frequentemente modelados separadamente como uma geometria invisível mais simples que tem menos vértices do que a geometria visível.

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

Os colliders não afetam a forma como modelos e entities interagem entre si, estes podem sempre sobrepor-se. Os colliders afetam apenas a forma como o modelo interage com o avatar do jogador.

Para que um objeto seja reconhecido por uma cena de Decentraland como um collider, tudo o que precisa é de ter um nome de uma determinada forma. O nome do objeto tem de incluir o sufixo “\_collider” no final.

Por exemplo, para criar um collider para um poste de iluminação, pode criar um objeto em forma de caixa simples à volta do seu tronco. Os jogadores na cena não verão esta caixa, mas ela bloqueará o seu caminho.

![](/files/86baaa20a90d5af47268cad88ca3d744c3fd4dd0)

Neste caso, podemos dar à caixa o nome “LampPost*collider” e exportar tanto a árvore como a caixa como um único modelo \_\_gltf. A tag \*\_\_collider*\* alerta o motor do mundo Decentraland de que o objeto caixa pertence ao conjunto de colliders, tornando a mesh do collider invisível.

Sempre que um jogador vir o modelo do poste de iluminação na sua cena, verá o modelo complexo do seu candeeiro. No entanto, quando caminhar contra ele, irá colidir com a caixa, e não com a árvore.

## Restrições Espaciais do Jogador

Quando cria modelos pensados para os jogadores caminharem à sua volta, precisa de ter em conta as seguintes medidas de referência:

* Os jogadores conseguem subir um degrau até 30 centímetros de altura sem saltar
* Os jogadores conseguem subir inclinações com um ângulo até 45 graus sem saltar
* Os jogadores conseguem saltar até 1,8 metros de altura
* Os avatares medem cerca de 1,9 metros de altura, mas tenha em conta que podem ter chapéus ou outros wearables na cabeça.

Sempre que um jogador vir o modelo da árvore na sua cena, verá o modelo complexo da sua árvore. No entanto, quando entrar contra a sua árvore, irá colidir com a caixa, e não com a árvore.

### Add Um Collider A uma Escadaria

As escadas são um caso de uso muito comum para objetos collider. Para que os jogadores consigam subir escadas, tem de existir um objeto \_collider correspondente no qual os jogadores consigam pisar.

Recomendamos usar um objeto rampa para os colliders das suas escadas, pois isso proporciona uma experiência muito melhor ao subir ou descer. Quando subirem as suas escadas, parecerá uma subida ou descida suave, em vez de exigir que “saltem” cada degrau individual.

Usar um objeto rampa também evita criar geometria desnecessária, poupando espaço para outros modelos mais complicados. Tenha em conta que a geometria do collider também é tida em consideração 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 das escadas originais.

![](/files/0b4705278d035b18290ce845d0849047546d935b)

2. Dê ao objeto rampa um nome semelhante a S*tair\_collider*. Tem de terminar em \_*collider*.
3. Sobreponha o objeto rampa às escadas para que ocupem o mesmo espaço.

![](/files/79d3b279f9004639ed85cf2834c9f87b2b3921ed)

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

Agora, quando os jogadores virem as escadas na sua cena, verão o modelo mais elaborado das escadas, mas quando as subirem, colidirão com a rampa.

## Otimizar Colliders

* Prefira usar **Caixa**, **Esfera** e **Cápsula** meshes de colisão, porque será mais performante no Loading e em runtime.
* Considere aproximar uma mesh de colisão complexa com várias meshes de colisão Primitive (**Caixa**/**Esfera**/**Cápsula**)

![](/files/779f85ba0da10659ca3aef25756e563d449a0169)

*Exemplo: Collider para Anel pode ser composto por vários colliders Capsule ou Box*

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

### Colliders Convex vs Concave

Se usar uma mesh collider arbitrária for a única possibilidade, então torne a mesh de colisão Convex (não Concave). Isto evitará situações físicas estranhas, como trepidação, ficar preso dentro do collider ou clipping através dele. Note que muitas vezes é possível imitar uma mesh concave com várias meshes convex.

![](/files/d091cb3653f10c84a047ac5aa4d334098e08e315)

## Nomenclatura de Colisão

**Use nomes significativos. O nome deve dar contexto sobre onde o asset é usado ou a que parte do objeto se refere.**

Para a nomenclatura de assets usamos uma mistura de `PascalCase` e `snake_case`, à qual podemos chamar `PascalSnake_case`. Regras básicas aqui - uma palavra nova ou uma palavra após o separador (`_`) começa com **Letra maiúscula.**

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

* Segue os mesmos princípios das Meshes acima, mas tem `_collider` sufixo no final **Exemplos:** 🟢 **Prefira** nomes - `Tram_Wheel_LeftFront_collider` 🔴 **Evite** 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 deteção de colisões irá melhorar o desempenho e o tempo de Loading da sua cena 💪🚀

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 triângulos ao criar colliders.** Evite fazer uma cópia de um objeto complexo para usar como collider. Colliders simples garantem uma boa experiência de utilizador e mantêm a sua cena dentro das limitações de triângulos.
* **Os objetos collider não devem ter qualquer material**, pois os jogadores da sua cena nunca o verão. Os colliders são invisíveis para os jogadores.
* **Todos os nomes de objetos collider devem terminar com \_*****collider*****.** Por exemplo, T*ree\_collider*.
* **Se usar um \_plane**\_\*\* como collider, ele só bloqueará numa direção.\*\* Se quiser que os colliders bloqueiem de ambos os lados, por exemplo numa parede, tem de criar dois planes com as suas normals viradas em direções opostas.
* Ao duplicar objetos collider, preste atenção aos seus nomes. Alguns programas acrescentam um \_*1* ao final do nome do ficheiro para evitar duplicados, por exemplo *tree\_collider\_1*. Objetos com nomes assim serão interpretados pelo Decentraland World Engine como objetos normais, e não colliders.
* Pode evitar adicionar uma mesh collider se adicionar um componente invisível `MeshCollider` à entity, que aproxima a forma do modelo 3D.
* Também pode evitar adicionar uma mesh collider se configurar o componente `GLTFContainer` para usar a geometria visível como collider. Veja [**Colliders em models 3D**](https://docs.decentraland.org/creator/development-guide/sdk7/colliders/#colliders-on-3d-models) .
* Se estiver a criar um modelo 3D com muitas formas de mesh em que cada uma precisa do seu collider, existem alguns addons úteis que podem ajudar. Para Blender, pode usar a opção batch rename dentro do Blender \*\*\*\*para adicionar automaticamente um `_collider` sufixo a todos os nomes de mesh num grupo. Mais sobre esta ferramenta na secção “**Usar Blender para renomear 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-pt/modelacao-e-animacoes-3d/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.
