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.
Desafio
FácilA 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, depoisPressed 2e 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, ...
}
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
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para Coletar