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.
Desafio
MédioFaça a porta da loja abrir enquanto alguém estiver sob o sensor.
- Em
Update(), testePhysics.Raycast(transform.position, Vector3.down, reach): um raio reto para baixo, comreachunidades de comprimento, que para acima do chão. - Quando for verdadeiro, chame
door.SetActive(false);e, noelse,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
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