- Home /
How to determine which side of an object a raycast has hit?
Is it possible to determine which side of a GameObject a raycast has just hit?
I wan't to do this becasue I wan't you to be able to click a surface in a 3D world, and an object will be placed on that surface whith it's top facing straight up/away from the clicked surface. (Image below)
/TheDDestroyer12
just food for thought, I haven't tried it out yet
But can't you tell the position of a ray cast hit ? If you compare the ray cast hit position and the object position, can't you deter$$anonymous$$e the side you hit ?
For example, A cube at (0,0,0) with size (2,2,2) - so that all his corners are combinations of 1s and -1s.
If you click the left side, the hit position should be something like (1,y,z) where y and z are lower than 1, but higher than -1...
$$anonymous$$nowing that, you can say than when a ray cast hit is like (0.2,-1,-0.7), you're hitting the bottom of the object.
Code wise, it'd be like taking avery component (x,y and z), and comparing them to the object's origin, the greatest absolute value is the axis, and the sign is the side.
Like I said, I'm not entirely sure this works, so i'm not gonna post it as an answer. But try it out and see if it helps any
Answer by robertbu · Sep 25, 2014 at 03:39 PM
The typical solution is to use the RaycastHit.normal. This line of code executed on the object to aligned will align it with the surface:
transform.rotation = Quaternion.FromToRotation(transform.up, hit.normal) * transform.rotation;
Your answer
Follow this Question
Related Questions
Detemine wich side of a cube was hit 1 Answer
Code to detect side of an object a point is on is offset 0 Answers
Accessing Variables from Another Script 1 Answer
General Way To 'Widen' A Ray Cast? 1 Answer
Make an Enemy Shoot through Raycast 1 Answer