Menu
CoddyTech

OnCollisionEnter

Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 8 de 63.

Quando dois colisores começam a se tocar, o Unity chama OnCollisionEnter(Collision collision) nos scripts dos dois objetos. Ele é chamado uma vez, na etapa de física em que o toque começa, e não novamente enquanto eles permanecem em contato. Para que ocorra uma colisão, pelo menos um dos dois precisa de um Rigidbody que seja movido pela física: uma parede e um chão sem Rigidbody nunca reportam nada um ao outro.

Esta caixa registra uma mensagem quando aterrissa. Ela tem um Rigidbody, então cai, e a mensagem chega na etapa em que encontra o chão:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Thud!");
}

A caixa registra uma mensagem uma vez, e só registra novamente depois que sai do chão e aterrissa pela segunda vez. O chão também recebe a mensagem: um script nele ouviria a caixa aterrissar, mesmo que o chão não tenha Rigidbody. O nome e o parâmetro precisam estar exatos. Um método chamado onCollisionEnter nunca é chamado, sem gerar erro. Um método que recebe um Collider faz o Unity registrar Script error: OnCollisionEnter com This message parameter has to be of type: Collision e ignorá-lo. Enquanto os dois permanecerem em contato, o Unity chama OnCollisionStay a cada etapa de física e, quando se separam, chama OnCollisionExit uma vez.

challenge icon

Desafio

Fácil

A placa de pressão conta o que cai sobre ela. A placa não tem um Rigidbody; a caixa acima dela tem um e cai sobre a placa.

  • Cada vez que algo começa a tocar a placa, adicione 1 à contagem e registre: Pressed 1, depois Pressed 2 e assim por diante.
  • Algo que fique sobre a placa conta uma vez, por mais tempo que permaneça ali.

Pressione Play e observe o Console, depois Check.

Experimente você mesmo

using UnityEngine;

public class PressurePlate : MonoBehaviour
{
    // Conte cada vez que alguém aterrissar e registre no log: Pressed 1, Pressed 2, ...
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Física e jogabilidade