Hi Jason, sorry for the delay.
Truth be told, the best and more reliable way is to use raycollision. But yes, if you're targetting mobile or really big scenes, performance can be a problem. Now, most alternatives won't be much faster, so I'd suggest you just use raycollision, but avoid checking it every frame. You can check collisions every five frames for example, that will reduce CPU usage a lot and won't give you many delay problems.
By the way, are you really concerned about performance? Is this for mobile or are your scenes really that big?