Raycasting é o processo de disparar
um raio invisível a partir de um ponto,
em uma direção especificada para detectar se
algum colisor se encontra no caminho do raio.
Como por exemplo ao disparar uma arma.
Nesse caso,
nosso personagem quer atirar na caixa do mal
que o traiu e matou seu pai.
A sintaxe da função de raycast se parece com isso.
Pode parecer confuso de inicio,
mas quando você entender o que cada parte faz,
fará muito mais sentido.
Em primeiro lugar, a origem do raio é um
ponto no espaço mundial (world space).
Então, neste caso, escolheríamos um ponto
em frente ao cano da arma,
armazenado como um Vector3, uma posição X, Y e Z.
No entanto, esta direção das coordenadas do mundo
não vai informar a direção em que estamos disparando,
precisaremos de um segundo Vector3
para armazenar esta direção.
Essas duas variáveis Vector3 compõem nosso raio.
Mas também podemos substituir em uma
variável Ray, pois esse tipo de dado
pode armazenar dois Vector3's.
Nosso código ficaria assim.
O próximo argumento na função é
uma variável RaycastHit que armazena
informações sobre os colisores atingidos.
Para que possa ser usado no código
para informar quais objetos foram interceptados pelo raio.