Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula

arrow_back Aula 04 - Detecção de colisão e o Motor de Física

Os Componentes do Motor de Física 2D

Conhecendo os Colliders 2D

Os Colliders 2D são os objetos responsáveis por tornar possíveis as colisões entre objetos no mundo físico simulado de nosso motor. Eles são áreas fechadas que definem o espaço a ser ocupado por um objeto em nosso motor físico. É por meio do tratamento dessas áreas que o motor de física consegue detectar se dois objetos encostaram ou não.

Para que as colisões aconteçam adequadamente, os objetos devem ter colisores que representem bem a sua forma. Caso isso não aconteça, elas podem ocorrer de maneira estranha e, principalmente, passar informações visuais erradas ao usuário, dando a impressão de que um objeto está dentro de outro, ou algo do tipo. Conhecemos esse efeito como clipping. Isso pode ser evitado utilizando a forma correta de colisor. O Unity nos dá cinco opções de colisores 2D: Circle Collider 2D, Box Collider 2D, Polygon Collider 2D, Edge Collider 2D e Capsule Collider 2D. Cada um deles deve ser utilizado para cobrir uma forma diferente. Vejamos, na Figura 4, uma caixa com um Box Colider e um círculo com um Circle Collider. No Unity, os Colliders são representados com linhas verdes para termos uma referência visual de como eles estão posicionados.

À esquerda, objetos com Colliders (em verde) menores que seus formatos. À direita, os objetos em colisão inadequada devido ao tamanho dos Colliders.

Vemos, na Figura 4, o posicionamento dos Colliders sendo realizado de maneira errada, justamente para exemplificar os efeitos que isso pode causar visualmente em seu jogo. Perceba a importância de ajustar as propriedades de cada um dos Colliders, para que sempre passem a melhor impressão visual ao usuário, realizando as colisões adequadamente.

Já em relação às propriedades dos Colliders, elas estão em quantidade bem menor que no Rigidbody 2D. Algumas variações existem entre as diversas formas, mas, em geral, todas elas possuem as mesmas propriedades. Caso estejam ligados a um objeto que tenha um Rigidbody 2D com a opção Use Auto Mass ativa, como vimos anteriormente, a primeira propriedade do Collider 2D é a Density. Essa propriedade indica a densidade tida pelo objeto e será utilizada para calcular a massa total, com base na área.

Já a propriedade Material, como já discutimos, indica o material físico utilizado por esse Collider. Se nenhum for escolhido, ele utilizará o do Rigidbody 2D atrelado. Se também não houver, nenhum material será utilizado.

Em seguida, temos a propriedade Is Trigger. Ela é muito importante e é utilizada para criar objetos que funcionam apenas como gatilho para eventos, mas não possuem nenhuma função física propriamente dita. Quando essa opção é ativa, colisões com esse objeto dispararão um evento, porém não serão calculadas fisicamente. Ou seja, é possível atravessar o objeto, mesmo com o colisor, disparando somente um evento quando isso acontecer. Essa propriedade é útil para diversas coisas, como criar moedas coletáveis no Mario, por exemplo.

A última opção que os Colliders compartilham, antes das opções de tamanho e posicionamento individual que cada forma possui diferenciada, é a opção Used by Effector. Essa opção indica que o Collider é utilizado por um Effector para que este possa realizar as suas ações. Assim, é necessário que o Collider tenha essa opção marcada, ou o próprio Unity exibirá um erro dizendo que há um Effector sem nenhum Collider atrelado a ele no objeto. Mas o que é um Effector? Vamos descobrir!

Ah! Ia esquecendo! Os Colliders também apresentam a possibilidade de abrir as informações através da aba Info dentro do próprio componente. Uma ótima ferramenta de depuração!

Versão 5.3 - Todos os Direitos reservados