# Simple 2D Flight Physics with Box2D

I'm trying to build a simple side scroller with an airplane being the player. As such, I want to build simple flight controls with simple but realistic-feeling physics. I'm making use of cocos2D and Box2D. I have a basic system working, but just can't get the physics feeling correct.

I am applying force to the plane (which is a b2CircleShape) based on the user's input. So, basically, if the user pushes up, body_->ApplyForce(b2Vec2(10,30), body_->GetPosition()) is called. Similarly, for down -30 is used.

This works and the plane flys along with up/down causing it to dive or climb. But it just doesn't feel right. There is no slowdown on climbs, nor speed up during dives. My simple solution is far to simple.

How can I get a better feel for a plane climbing/diving?

Thanks!

• This link iforce2d.net/b2dtut/sticky-projectiles had some interesting ideas on air friction etc. Jun 19 '12 at 0:59
• This reminds me of a question about simulating paper fluttering... could be overkill for what you're doing, but fyi box2d.org/forum/viewtopic.php?f=6&t=7718&p=33405 Jun 19 '12 at 13:38
• You also need to consider the transfer of vertical momentum to horizontal momentum when the plane "swoops". Of course this would not apply if your flying a brick. Aug 30 '14 at 15:48