I am developing a first-person player movement in which the player should "fly" in the direction of his local forward vector.
This is working perfectly fine, however, when I turn the player to face other direction (rotate the y rotation axis), the force that has been added till this point, keeps significantly affecting the rigidbody so it moves the object towards the wrong direction, and it takes a lot of résistance force to move towards the "new" direction I am facing.
I'd optimally love to have a bit of "drifting" affect, so it maintains a realistic touch. I'm trying to achieve a behavior that is pretty much identical to a car behavior, so when the object is turning towards a direction, the object will actually almost instantly move towards this direction, maintaining its current velocity.
To make it clearer, here's an illustration of the current behavior:
Here's an illustration of the desired behavior:
This is the current code I'm using:
//Add force up
playerRB.AddForce(Vector3.up * wingForceUpMultiplier * forceUserInput, ForceMode.VelocityChange);
//Add force forward
playerRB.AddForce(forwardDirection * wingForceForwardMultiplier * forceUserInput, ForceMode.VelocityChange);
I am not necessarily looking for a complex-physics solution, it can be a simple workaround if there is any.