Entrada e saída
Parte da seção Física e jogabilidade do Journey de Unity da Coddy. Lição 19 de 63.
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 a causa. OnTriggerStay(Collider other) é executado em cada etapa de física enquanto durar a sobreposição, 50 vezes por segundo por padrão, como FixedUpdate(). Os três recebem o mesmo Collider.
Essa corrente ascendente ergue tudo o que flutua dentro dela e informa quando algo 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 momento em que ela sai. A corrente ascendente não tem Rigidbody, então todo objeto que entrar deve ter um, e attachedRigidbody nunca é null aqui. Para especificar 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 visita gera um OnTriggerEnter e, mais tarde, um OnTriggerExit para o mesmo collider.
Desafio
FácilA Baia amarela pintada no chão do armazém é um gatilho, e lamp é a luz de aviso no poste ao lado. Escreva LoadingBay para que a luz indique se há algo na baia:
- Quando o jogo começa, a baia está vazia, então a luz fica apagada (
lamp.enabled = false). - Enquanto houver pelo menos um objeto na baia, a luz fica acesa.
- Quando o último objeto sair, a luz se apaga novamente.
Duas caixas e o jogador podem estar na baia ao mesmo tempo, então a saída de um deles não significa que a baia está vazia. Pressione Jogar e empurre as caixas para dentro e para fora usando as setas, 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
}
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