Entrada e saída
Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 20 de 71.
Um gatilho envia mais duas mensagens. OnTriggerExit(Collider other) é executado uma vez, na etapa de física em que a sobreposição termina, seja qual for o motivo. OnTriggerStay(Collider other) é executado em cada etapa de física enquanto a sobreposição durar, 50 vezes por segundo por padrão, como FixedUpdate(). Os três recebem o mesmo Collider.
Essa corrente ascendente ergue tudo que flutua dentro dela e informa quando sai:
public float lift = 15f;
void OnTriggerStay(Collider other)
{
other.attachedRigidbody.AddForce(Vector3.up * lift);
}
void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " left the updraft");
}Uma força deve ser aplicada em uma etapa de física, então OnTriggerStay é adequado: o impulso é aplicado uma vez por etapa enquanto a bola estiver dentro e para no instante em que ela sai. A corrente ascendente não tem um Rigidbody, então cada objeto que entra precisa ter um, e attachedRigidbody nunca é null aqui. Para aplicar uma quantidade por segundo dentro de OnTriggerStay, multiplique por Time.deltaTime, que durante uma etapa de física corresponde à duração da etapa: 0.02. Cada entrada gera um OnTriggerEnter e, mais tarde, um OnTriggerExit para o mesmo colisor.
Desafio
FácilAcenda a lâmpada enquanto houver qualquer coisa na área de carga.
- Adicione um campo
int inBay;. EmStart(), definalamp.enabled = false;. - Em
OnTriggerEnter, some 1 ainBaye definalamp.enabled = true;. - Em
OnTriggerExit, subtraia 1 deinBaye apague a lâmpada somente quando o valor for 0.
Pressione “Jogar” e empurre as caixas para dentro e para fora: a lâmpada permanece acesa até a área ficar vazia. Depois, “Verificar”.
Experimente você mesmo
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// A lâmpada fica acesa enquanto houver algo na área de carga e apagada quando ela estiver vazia
}
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