- Home /
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.
Answer by Jordan Miller 2 · Feb 18, 2011 at 09:10 PM
not sure if this is any help but it sounds like you just need to know what the slope of the terrain is at the point your character is at, according to the direction its facing. I think this is code already in the charactermotor that does that:
var movementSlopeAngle = Mathf.Asin(movement.velocity.normalized.y) * Mathf.Rad2Deg;
Answer by Micha Lewtak · Jan 20, 2010 at 11:03 PM
I suggest you take a look at my (answered) question here, which is of the same nature:
It's a matter of vector algebra, no raycasting is necessary.
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Applying force with respect to angle with the ground? 1 Answer
Annoying smooth rotation jitter bug 1 Answer
How to smoothly rotate an object through just one axis 1 Answer
My Zombie Model is coming at me sideways with the AI 1 Answer