So I’m shooting a ray from the camera out into the scene using ScreenPointToRay, the code is below.
The TapPick function is called OnTap using the FingerGestures plugin, it’s being called everytime as expected so the tap gesture is not the problem.
For debug purposes I set the layermask to everything, and the ray is cast and returns anything I click on, I’ve tested by having the ray return the hit object’s name, but for some reason there’s a few capsule colliders on my player that just aren’t being seen by the ray at all.
What’s even weirder is the ray does successfully hit only the top portion of one capsule collider, so one part of the collider returns a hit but not the rest of it, I’ve never seen anything like it. And it’s not a distance issue, the ray does detect the ground and objects behind these few unseen colliders, there’s no collider between the camera and object occluding it either. I’m completely stumped.
function TapPick (tapScreenPos : Vector2) : GameObject
{
tapRay = Camera.main.ScreenPointToRay(tapScreenPos);
if (Physics.Raycast(tapRay, tapHit, 1000, TapLayerMask))
{
Debug.DrawLine (Cam.transform.position, tapHit.point, Color.cyan);
return tapHit.collider.gameObject;
}
return null;
}