I'm trying to make realistic plane physics, but using something like a BodyThrust for the propeller isn't going to help, check out this gif. https://i.gyazo.com/eb3f593cdbcdd4a6a6d0cf70ea7e5975.gif That's with BodyThrust set to 195 on the y-axis. It just stops and sits in the air instead of bouncing downward slowly.
I am trying to figure out how the BodyThrust values are calculated based on the part it is moving. So I made a 1x1x1 brick with all CustomPhysicalProperties set to 1. But I found changing the material also changes its physics, despite me enabling CustomPhysicalProperties. And I get anywhere from 190-210 to keep it afloat. This just doesn't make sense.
So are there any alternatives to creating smooth plane movement other than BodyThrusts or CFraming? I feel CFrames being changed by scripts wouldn't be smooth or stable enough.

2 comments
Why wouldn't setting CFrame be smooth enough? You can do it on RenderStepped, though you have to do this locally on all clients which becomes problematic.
CFrame would at best render at 30 steps per second (due to script refresh rates), which on a 60FPS screen wouldn't look smooth.