Uma das grandes vantagens de se utilizar uma game engine, é sem dúvidas as diversas facilidades que elas nos trazem.
Por exemplo, detectar colisões é um grande desafio, mas com uma engine como a Unity, esse sistema já vem pronto.
E ainda podemos personalizar uma detecção de colisão, através do Physics, a classe de física da Unity, usando o Raycast
Raycast
Basicamente através dessa função, podemos lançar uma linha em qualquer direção que definirmos.
E através dela é possível detectar colisões, mas, além disso, conseguimos acessar diversas propriedades do objeto encontrado.
E seu funcionamento é bem simples, se não existir nenhum objeto em contato com a linha, ela retorna false.
E caso encontre algo, ela nos retorna true, pois, existe algo, e a partir daí nos dá diversas opções.
Porém, podemos definir uma layer específica para ela detectar, ignorando assim outros objetos que entrem em colisão, com layers diferentes.
E através do comando GetComponent, conseguimos acessar praticamente tudo que precisarmos desse objeto encontrado.
Qual é a sua utilidade em jogos?
Existem diversas mecânicas que podemos criar, que se beneficiam dessa colisão personalizada com o Raycast.
Por exemplo, ela pode ser muito útil e mais precisa em uma mecânica de pulo, na detecção do chão.
Pois, você pode apontar 2 Raycasts para o chão, posicionados no pé, que colidam apenas com a Layer ground.
E em jogos de tiro, quando o player mira no alvo, um Raycast pode ser disparado nessa direção.
Pois, dessa forma, é possível trazer uma precisão absurda de onde exatamente a bala irá atingir, no momento do disparo.
E com isso você pode melhorar ainda mais a quantidade de dano que o inimigo receberá.
Mas, além disso, é possível detectar obstáculos entre você e o inimigo como paredes, pedras, portas, escudos, etc.
E com isso limitar um ataque mágico, impedir um disparo, por exemplo, e diversas outras opções.
Como utilizar?
É recomendado sempre utilizar o FixedUpdate, para lidar com classes físicas da Unity, como o Physics, por exemplo.
E primeiro acessamos o Physics, e caso seja um projeto 2D, acessamos o Physics2D, e após, o Raycast.
E existem diversas sobrecargas para o Raycast, que variam conforme você adiciona mais parâmetros.
E primeiro passamos o ponto inicial do raio e depois a sua direção com: transform.position, transform.right.
Mas podemos adicionar mais um argumento referente ao tamanho do raio, declarando uma variável ou diretamente.
E podemos adicionar também um argumento, referente a layer que queremos colidir, através de variável ou pelo int da layer.
E através desse raio de colisão, temos diversas opções, como pegar seu ponto de colisão, acessar seus componentes, etc.
Por exemplo, criando uma variável RaycastHit, armazenamos o objeto da colisão e podemos acessar diversos comandos.
Como o point, distance, transform, e ainda usando o transform.Getcomponent, temos acesso total a esse objeto.
Por fim, ao Physics nos dá diversas opções de colisão diferentes do Raycast, como o Overlap, BoxCast, etc.
E basicamente funcionam da mesma forma, mudando um pouco seus parâmetros e formatos.
Mas, todos trazem diversas vantagens para nós, bastando escolhermos o que mais se adequar ao nosso game.
Abaixo deixaremos o primeiro vídeo de uma playlist bem bacana que te ensina os conceitos básicos da programação:
Seja o primeiro a comentar.