O que é RayCast na Unity?

Uma das grandes vantagens da física que acompanha a Unity é a possibilidade de executar testes simples (que não comprometem o desempenho do jogo) que permitem antecipar colisões para tomada de ações via código.

Na prática o código em sí é simples, mas o conceito por trás é que realmente torna o processo interessante. A Unity fornece a você um grande conjunto de colisores (boxes, capsule, etc…) mas eles por sí só podem resolver problemas em um segundo momento de sua mecânica de jogo.

Em alguns casos você realmente precisa antecipar se haverá uma colisão de forma antecipada, para então tomar uma decisão. Vamos imaginar por exemplo que você precise descobrir se após um pulo, seu personagem está ou não próximo ao chão novamente para então mudar a animação para algo como aterrisando.

Posted Image

No exemplo acima, eu realizo um raycast no personagem para descobrir justamente isso, se ele está próximo do chão para mudar sua animação. O código para executar um RayCast deve estar no seu evento Update() para que ocorra de forma contínua.

Como comentei é um processo leve, porém isso significa que você precisa ter clareza de que os testes custam processamento e por isso, use-os com sabedoria (não vá enchendo de testes seu jogo).

Outro ponto importante é que Debug suporta algumas operações que podem tornar os testes visíveis e assim você ter uma idéia melhor do que está acontecendo (já que por padrão o teste feito não gerá nada graficamente).

    private void Update()
    {
        if (Physics.Raycast(transform.position, -Vector3.up, out hit))
        {
            distancia = hit.distance;
            Debug.DrawLine(transform.position, hit.point, Color.cyan);
        }
    }

Aqui não vou entrar em detalhes do uso, mas basta ver que suas variáveis:

  • hit (do tipo RaycastHit)
  • distancia (do tipo float)

Fazem o trabalho de calcular a distância entre o ponto de origem e o primeiro ponto de colisão. O Debug utilizado ali tornou o processo “gráfico” e no modo design quando o jogo estiver rodando você poderá ver o trabalho ocorrendo (rode o jogo, clique em Scene e pronto).

Fonte:
http://www.unidev.com.br/index.php?/page/articles.html/_/unity3d/unity-antecipando-colis%C3%B5es-com-raycast-r41

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s