Menu
CoddyTech

Physics.Raycast

Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 35 de 71.

Um raycast dispara uma linha invisível a partir de um ponto em uma direção e informa se atingiu um colisor. Physics.Raycast(origin, direction, maxDistance) retorna true quando há um colisor na linha dentro de maxDistance unidades e false caso contrário. Este carro freia quando algo está a menos de 2 unidades à frente do seu para-choque:

public float brakeDistance = 2f;

void Update()
{
    if (Physics.Raycast(transform.position, transform.forward, brakeDistance))
    {
        Debug.Log("Brake!");
    }
}

transform.forward gira junto com o carro, então o raio sempre aponta para fora da parte dianteira; Vector3.forward apontaria sempre ao longo do eixo z do mundo. O raio começa no centro do carro, dentro do próprio colisor, e um raio nunca detecta um colisor dentro do qual começa, então o carro não detecta a si mesmo. Se você omitir maxDistance, o raio se estende infinitamente: o carro frearia por causa de uma parede do outro lado do mapa.

Os raios detectam colisores, não o que é desenhado: um objeto com um Renderer e sem colisor é invisível para eles, e um colisor de gatilho conta como um impacto. Enquanto testa, Debug.DrawRay(transform.position, transform.forward * brakeDistance, Color.red) desenha o raio na visualização Scene do Unity.

challenge icon

Desafio

Médio

Faça a porta da loja abrir enquanto alguém estiver sob o sensor.

  1. Em Update(), teste Physics.Raycast(transform.position, Vector3.down, reach): um raio reto para baixo, com reach unidades de comprimento, que para acima do chão.
  2. Quando for verdadeiro, chame door.SetActive(false); e, no else, door.SetActive(true);.

Pressione “Jogar” e conduza o Visitante para baixo do sensor: a porta abre e fecha atrás dele. Em seguida, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class DoorSensor : MonoBehaviour
{
    public GameObject door;
    public float reach = 3f;

    void Update()
    {
        // Abra a porta enquanto o raio apontado para baixo a partir do Sensor atingir algo.
    }
}

Todas as lições de Física e Jogabilidade

Pratique por conta própria: Playground de Unity