- Home /
Correcting Directional velocity for a plane
Hi,
I am trying to simulate flying, but not with 100% real physics. Now the problem I've been banging my head against the wall with is the applying velocity based on the planes direction.
//Apply velocity
Vector3 relativeVelocity = transform.forward * rigidbody.velocity.magnitude;
rigidbody.velocity = relativeVelocity;
void FlightPhsics()
{
//Apply the rotation, based on roll
rigidbody.rotation = GetBankedTurnRotation(rigidbody.rotation);
//Apply velocity in forward direction based on rotation (Planes move forward based on rotation)
//So Apply the forward velocity at all times
Vector3 relativeVelocity = transform.forward * rigidbody.velocity.magnitude;
rigidbody.velocity = relativeVelocity;
//Limit the speed
if (rigidbody.velocity.magnitude > maxSpeed)
rigidbody.velocity = rigidbody.velocity.normalized * maxSpeed;
}
Now the above script works. I get the plane moving correctly across the z and x axis nicely. The diving works well. The problem comes in is when the plane is facing up. Because I set the velocity with an =. I lose out on gravity. I.E. When velocity is (0,-0.1,0) The plane is facing up, so it becomes, (0,0.1,0)
I've tried changing everything to work with just AddForce, but it wasn't snappy. So I went back to this. I than tried:
Vector3 relativeVelocity = transform.forward * rigidbody.velocity.magnitude;
relativeVelocity.y = rigidbody.velocity.y;
rigidbody.velocity = relativeVelocity;
In an attempt to keep the original Y velocity, but than it goes haywire when rising and diving. So I was thinking, well if it is falling, the y velocity must be < 0. So if less than 0, don't apply relative velocity... Didn't work.
I than went and had a look at Unity's flying script, but it seems they went about it a different way, in what I thought was more complex, and I don't like copying code because I'm here to learn, so that if a similar problem occurs. I can fix it.
So I am here for some expert advice. Any help on how to fix the gravity problem, that would be greatly appreciated.
~Jared