- Home /
Rotate an object perpendicular to an objects normals?
Hey. I have fired a raycast from one object, and it takes the normal's off from the surface of the model it hits. But how would I rotate the initial object 90* perpendicular to the object, the ray cast hits?
I don't even know what the Vector3 from the normal's is suppose to mean.
Thanks for your albeit valuable time!
Can you clarify? It sounds like you want to spawn something like a rabbit, nose pointing local Z in the usual way. But it have sitting "flat" (tilted with) on whatever surface you hit.
90 degrees from the normal is an infinite amount of vectors. We're representing them with three floats, but 79,228,162,514,264,337,593,543,950,336 is still significantly more than 1.
Answer by fherbst · Feb 14, 2012 at 09:49 PM
You need an additional rotation to determine that. You need some "forward" direction for your object - only pointing up from a surface does not completely describe a rotation.
if(Physics.Raycast(ray, out hit, Mathf.Infinity) {
// place at hit.position
transform.position = hit.point;
// look in the direction of the hit object
transform.LookAt(hit.transform.position + hit.transform.forward, hit.normal);
// or: look up along the object
// transform.LookAt(hit.transform.position + Vector3.up, hit.normal);
// or: look in same direction as before
// transform.LookAt(transform.forward, hit.normal);
}
Your answer
Follow this Question
Related Questions
Pointcast? - Raycast Point X from same Point X 0 Answers
RaycastHit.normal - what does it really return? 4 Answers
Rotating an object to equal normals of object below 1 Answer
How do I obtain the surface normal for a point on a collider (can't use RaycastHit.normal)? 3 Answers
Aligning a sprite to the ground's normal using raycasts 1 Answer