4 de novembro de 2018

Unity LayerMask com RayCast

Por diversos motivos temos que identificar objecto, geralmente a maneira mais rápido é usando as tags.

Mas quando é detecção de física: um raycast por exemplo, as tags não é a melhor forma. Então usamos as layers. Assim o sistemas só se preocupa com uma ou as layers marcadas, ficando bem mais leve.

Temos então que criar uma variável do tipo LayerMask:

[SerializeField] private LayerMask detectionLayerMasck;

Com isso tenho como escolher a Layer. E no Raycast basta:

if (Physics.Raycast(transform.position, -transform.up, out hit, height, detectionLayerMasck))
{
   rb.AddForce(transform.up * (forceMultiplier / (hit.distance)));
}

Feito.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *