OnTriggerEnter
Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 16 de 71.
void OnTriggerEnter(Collider other) é executado uma vez, na etapa de física em que outro colisor começa a se sobrepor a um gatilho. other é esse colisor, então other.name, other.gameObject e other.CompareTag("Player") informam o que entrou. Unity o chama nos scripts de ambos os objetos: no gatilho, other é o visitante e, no visitante, other é o gatilho.
Esta linha de chegada reage ao jogador e a nada mais, então uma bola que rola sobre ela não registra nada:
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log(other.name + " crossed the finish line");
}
}O parâmetro precisa ser um Collider. Escrito como void OnTriggerEnter(Collision collision), o script ainda compila, porque, para C#, é um método comum. Unity verifica o próprio parâmetro, registra um Script error: OnTriggerEnter que diz This message parameter has to be of type: Collider e nunca chama o método. Collision pertence a OnCollisionEnter, em que dois corpos sólidos se encontram em um ponto de contato. Um gatilho não tem contato para relatar, apenas o colisor, então recebe um Collider.
Desafio
FácilCorrija o método do pedágio e, em seguida, cobre o pedágio dos carros.
- Pressione “Jogar”: o Console mostra um erro sobre o método. Altere-o para
void OnTriggerEnter(Collider other). - Dentro dele, quando
other.CompareTag("Car"), adicionetollacollectede registre"Toll: " + collected. O ciclista passa de graça.
Pressione “Jogar”: o Console mostra Toll: 3 e, em seguida, Toll: 6. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class TollGate : MonoBehaviour
{
public int toll = 3;
int collected;
void OnTriggerEnter(Collision collision)
{
// Carros pagam o pedágio; qualquer outra coisa passa de graça
}
}
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çamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisõ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 ColetarPratique por conta própria: Playground de Unity