I want a player controlled character that can defy gravity and just float around, but only if there is a surface close enough. I think I could do this with a trigger (detect if there's a scenery object within a spherical area), but it wouldn't give me any location information. I would like to have some kind of special effect (such as electrical sparks) go between the character and the surfaces (or portion of surface, for large flat objects) closest to them, preferably weaker with distance (dropping off entirely when too far). Also, I would like the ability to do this to multiple surfaces if there are more than one separate object close enough, though this is less important. The effect may be something similar to F-Zero GX when a car boosts and fires electricity on to the ground behind it.
I considered ray casting (from the character) or checking 3d points for collisions, but I don't know how to do that in Unity, and, if I understand correctly, I'd have to wait for the physics engine to do a separate update before I could get the result anyway.
How would you get a list of all the surfaces close to an individual (and access the location of the surface)? And, for larger surfaces, how would you determine the closest point on that surface?
Edit: By the way, there is no ground. The character and objects float in a void. Also, colliders would push the character away, which is why I don't want to use that.