我正在尝试构建一个简单的侧卷轴,其中飞机是玩家。因此,我想用简单但逼真的物理构建简单的飞行控制。我正在使用cocos2D和Box2D。我有一个基本的系统工作,但只是不能让物理感觉正确。
我根据用户的输入对飞机施加力(b2CircleShape
)。所以,基本上,如果用户向上推,则会调用body_->ApplyForce(b2Vec2(10,30), body_->GetPosition())
。同样,对于down -30使用。
这样可行并且飞机上下飞行使其潜水或爬升。但它感觉不对。在攀登过程中没有减速,也没有在潜水期间加速。我的简单解决方案远非简单。
我怎样才能更好地感受飞机攀爬/潜水?
答案 0 :(得分:1)
我最终简化了飞行中适用的基本力量:即推力,阻力,升力和重力。
我做了以下简化:
现在,用户只控制飞机的角度,然后调整推力和升力,更新世界模拟。
这给人一种良好的感觉模拟,但大大简化了。
答案 1 :(得分:-1)
我会这样做:
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);
使用这种方法,您可以轻松地使用两个功能调整系统