Cocos2d iphone 使用Box2D的简单二维飞行物理
我正试图建立一个简单的侧面滚动与飞机的球员。因此,我想建立简单的飞行控制与简单但现实的感觉物理。我正在使用cocos2D和Box2D。我有一个基本的系统在工作,但就是不能让物理感觉正确 我根据用户的输入向平面(这是一个Cocos2d iphone 使用Box2D的简单二维飞行物理,cocos2d-iphone,box2d,game-physics,Cocos2d Iphone,Box2d,Game Physics,我正试图建立一个简单的侧面滚动与飞机的球员。因此,我想建立简单的飞行控制与简单但现实的感觉物理。我正在使用cocos2D和Box2D。我有一个基本的系统在工作,但就是不能让物理感觉正确 我根据用户的输入向平面(这是一个b2CircleShape)施加力。因此,基本上,如果用户向上推,就会调用body->ApplyForce(b2Vec2(10,30),body->GetPosition())。同样,对于down-30也使用 这起作用,飞机随着上/下方向飞行,导致其俯冲或爬升。但感觉不太对劲。攀登
b2CircleShape
)施加力。因此,基本上,如果用户向上推,就会调用body->ApplyForce(b2Vec2(10,30),body->GetPosition())
。同样,对于down-30也使用
这起作用,飞机随着上/下方向飞行,导致其俯冲或爬升。但感觉不太对劲。攀登时不会减速,跳水时也不会加速。我的简单解决方案是非常简单的
我怎样才能对飞机攀爬/跳水有更好的感觉 我同意:
float engineForce(/* possibly some params */)
{
return SOME_CONSTANT;
}
float airResistance(float velocity /* possibly more params */)
{
return CFT * velocity;
}
float resultForce = std::max(engineForce() - airResistance(), 0);
使用这种方法,您可以轻松地调整系统,使用两种功能我最终简化了飞行中应用的基本力:即推力、阻力、升力和重力 我做了以下简化:
这给了模拟一个很好的感觉,但大大简化了。在不知道Box2D的
ApplyForce
实际工作原理的情况下,您是否尝试过使所施加的力与当前速度成比例(记住方向)?所以,如果你不往上爬,你爬得比你往上爬并且想爬的时候慢?干得好。足够简单,但不太简单。