Na Unity assim como em outras engines, é possível usar um complexo sistema de física e colisões.
E para detectarmos facilmente alguns tipos de colisões, temos as funções Triggers e Collisions.
E neste artigo vamos conversar mais sobre como funciona e suas variações.
Qual a importância dessas funções?
A base da lógica de criação, das mais variadas mecânicas nos jogos, é feita em cima da detecção de colisões.
Pois, quando o jogador acerta o inimigo, ou quando ele toca em um objeto, por exemplo, precisamos definir ações.
E para isso é necessário detectcar esse toque, assim como saber também, quais os objetos de jogo, estão se colidindo.
E é nesse momento que entra a importância do Collision e do Trigger, pois, ambos serão aplicados em situações específicas.
Mas, sempre com o objetivo de detectar colisões entre objetos de jogo.
E um detalhe muito importante é que para assas funções funcionarem, pelo menos um dos objetos, precisa ter o Rigidbody.
Pois, esse componente é responsável pela física, e será parte fundamental, para os cálculos de colisão.
Collision na Unity
Nos colisores, existe uma configuração que permite você atravessar ele ou não.
E o Collision vai detectar a colisão entre objetos onde não é possível atravessar o colisor.
Pois, neste tipo de colisor buscamos simular objetos “rígidos” de fato, como rochas, paredes, corpos, etc.
E rochas ao se colir, não se atravessam, por assim dizer, então, nesse caso buscamos simular esse tipo de colisão.
E para detectarmos essa colisão, usamos a função OnCollision, e caso seja em jogos 2D, basta adicionar o 2D.
OnCollisionEnter / OnCollisionEnter2D:
Essa função é lida uma vez, quando os objetos entram em colisão.
OnCollisionStay / OnCollisionStay2D:
Essa função é lida enquanto os objetos permanecem em colisão.
OnCollisionExit / OnCollisionExit2D:
Essa função é lida uma vez, quando os objetos saem da colisão.
Trigger na Unity
No caso de o colisor do objeto estar marcado como isTrigger, seu colisor permite ser atravessado.
E esse tipo de colisor pode ser útil demais em diversas situações como, bolas de energia que atravessam o cenário.
Quando caímos dentro de um lago, por exemplo, enfim, sempre que precisarmos atravessar algo.
Mas, que ainda desejamos detectar essa colisão, e para esse tipo, usaremos a função Ontrigger.
E dessa forma podemos atravessar outros colisores do jogo e ainda assim detectar esse contato.
OnTriggerEnter / OnTriggerEnter2D:
Essa função é lida uma vez, quando os objetos entram em colisão.
OnTriggerStay / OnTriggerStay2D:
Essa função é lida enquanto os objetos permanecem em colisão.
OnTriggerExit / OnTriggerExit2D:
Essa função é lida uma vez, quando os objetos saem da colisão.
Por fim, tanto nas funções Triggers e Colissions, é criado uma variável que armazena o objeto colidido.
E será através dessa variável que você terá acesso a diversos comandos para realizar as ações necessárias.
E você pode acessar e comparar suas layers e tags, capturar scripts e componentes, e ter acesso total ao objeto armazenado.
Seja o primeiro a comentar.