# Making an object stay parallel to the terrain it is on?

I am trying to make an object in one of my games stay paralell to the terain it is riding on, so say if I am going over a mountain I want to make it look like it is going over the mountain. Right now all I can do is use raycasting like this

`````` var fwd = transform.TransformDirection (Vector3(1,0,0));
if (Physics.Raycast (transform.position, fwd, 1)) {
transform.Rotate(Vector3(-1,0,0) * speed * Time.deltaTime, Space.World);
}
if (Physics.Raycast (transform.position, -fwd, 1)) {
transform.Rotate(Vector3(1,0,0) * speed * Time.deltaTime, Space.World);
}
var rit = transform.TransformDirection (Vector3(0,0,1));
if (Physics.Raycast (transform.position, rit, 1)) {
transform.Rotate(Vector3(0,0,1) * speed * Time.deltaTime, Space.World);
}
if (Physics.Raycast (transform.position, -rit, 1)) {
transform.Rotate(Vector3(0,0,-1) * speed * Time.deltaTime, Space.World);
}

``````

but that does not allways work, and I was just wondering if there was a more efficient way to do it, it works ok but every once in awhile if I am turning at the same time the object flips and starts going out of control.

I suggest you take a look at my (answered) question here, which is of the same nature:

``````var movementSlopeAngle = Mathf.Asin(movement.velocity.normalized.y)  * Mathf.Rad2Deg;