Menu
CoddyTech

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.

challenge icon

Desafio

Fácil

A 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
}
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