Alright so, I’m going to try to make this short and concise.
I want to make a semi-realistic aircraft, I’ve figured out lift balancing but I’m having issues with drag.
I need to use vector forces to simulated drag, but how do I tell what the Velocity.magnitude is in certain directions? ex; up, down, forward, left, right, as well as the angular velocity so the plane wont just spin out.
Now, in my previous designs, I’ve used a body gyro to counteract the spinning issue, and it works perfectly fine but the movement doesn’t feel natural, I want to experiment with using different methods and this is probably the first one I want to try. In the other designs, instead of vector forces, I’ve used body velocity instances. These work well, yet aren’t what I want, as I can’t use dynamic force methods. Since the body velocity is always trying to get the plane to move forward, it will always try to cancel out other forces, such as when your turning, it will always cancel out the force that’s drifting you to the right.
Thanks,
– Luke
(Oh yeah, what I mean by “dynamic force”, I’m talking about how body velocities will have a target speed instead of a throttle value which I can get from vector forces, which means when you throttle down with body velocity, its trying to lower the speed, instead of lowering thrust output. Thus, making it more natural when you slow down, instead of just abnormally matching the throttle value at insanely fast rates.)
Try calculating a variable -thrust force into your calculations. Lets say your forward force (+Z force for example) is making you fly at a certain velocity. When you are at high velocity then increase the overall ‘drag’ value (-Z) to counteract the thrust, and at lower velocities reduce the drag.
This should cause a normal acceleration reaction since (in my example) if you are at 100% thrust with a +Force of 100,000 and a -Drag of 10,000 and then reduce the thrust to 10% the forward thrust would be +10,000 and the drag would be -1,000.
You’d just need to script a slower reaction to the thrust inputs.
Okay, that solves the forward drag problem, what about the sides? I need something to cancel out sideways movement. Here’s an idea of what I’m talking about;
basically, the drag should cancel out the sideways force, so the plane is going forwards, not sideways.
When you start out in one direction at (insert speed here) SPS, then you turn, without drag, even though you turned, you’re still going in that direction, that’s why drag is there, to cancel out that velocity so the plane can go where its pointing.
That’s not a drag relationship, that’s a thrust relationship.
As the aircraft turns the thrust should be pushing the aircraft in the direction the nose is pointing, not sideways.
How do you have your VectorForce set up? Do you have the Force relative to an Attachment in your plane? Send a screenshot of your VectorForce Properties and the section of the script that deals with thrust and turning.
The vector force is pushing the plane in the direction its pointing, its just when it turns, the force in the direction it was previously going, is gone, but the velocity is still there, something something law of physics.
What is the Mass of the model involved? If it’s high then you are going to have inertia issues. Try making the overall mass of all the Parts involved Massless, then play with the Density of the Model.PrimaryPart to see if that works for you.