- Home /
Bound the gameobject from the ground
Hey guys! Here's a complicated task I cannot solve and looking forward to get ur help!
Picture of what I want to get done : http://img180.imageshack.us/i/hitpoint.jpg/
Description : I've a character, When I left click with my mouse on the Terrain the GameObject(Also called - HitPoint) goes to the hit.point position that was casted from the Mouse's position. and that HitPoint gameobject goes there with his 0,0,0 rotation. and I want it to be rotated like 180 degrees from the terrain. -Because I cannot explain exactly what I mean about rotating it like 180 degrees from the terrain the picture will make sure u understood it right. On the beginning I did this :
var HitPoint : Transform;
movePosition = hit.point;
HitPoint.transform.position = movePosition;
Now I need to rotate the HitPoint's.transform.rotation somehow. Thanks in advance!
Answer by qJake · Jun 21, 2010 at 10:27 PM
If you have a terrain called "myTerrain", you can set the rotation of the object "myObject" (your cylinder) using this:
myObject.rotation = Quaternion.LookRotation(
myTerrain.terrainData.GetInterpolatedNormal(
myObject.transform.position.x / myTerrain.terrainData.size.x,
myObject.transform.position.z / myTerrain.terrainData.size.z
)
);
I've never actually done this before, so it's kind of a guess, but I'm fairly certain you do need to use GetInpterpolatedNormal()
. If this exact code doesn't work, perhaps you can tweak it and figure it out yourself.
Also, this code doesn't use hitpoints for the purposes of making it more generic. This will actually work inside of Update(), and will cause "myObject" to always rotate with whatever direction the normal is at that point on the terrain.
nope, doesn't work it's like the 0,0,0 is 40,0,0 .. 40 degrees on the x-axis..
this is what i mean when i say 40 degrees on the x-axis : http://img130.imageshack.us/img130/6291/40degrees.jpg
I also tried.. with a ray the normals..
movePosition = hit.point; normalPosition = hit.normal; HitPoint.transform.position = movePosition; HitPoint.transform.LookAt(HitPoint.transform.position + HitPoint.transform.forward, normalPosition);
Your answer
![](https://koobas.hobune.stream/wayback/20220613062644im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Rotation Transform to face character AND normal to terrain 2 Answers
C# Rotate GameObjects Regardless of List Size 2 Answers
working with RotateArround 2 Answers
(Solved) Aligning player to surface while still maintaining look direction 1 Answer
Rotating a GameObject based on another GameObject's y-axis 1 Answer