【问题标题】:Constant speed object in Box2D simulationBox2D 模拟中的恒速对象
【发布时间】:2014-02-21 18:24:08
【问题描述】:
我想制作像游戏一样的破砖块,但砖块会对物理做出反应。
我将世界设置为 0 重力,并且砖块具有大的线性和角度倾倒设置。
但是我的球有问题。我希望我的球始终保持相同的恒定速度。即使在与砖块、墙壁和桨碰撞后(是的,我有 2 个)。我知道这不是物理学的工作原理。
但是有什么方法可以让球在接触某些物体时不失速?并让球立即从砖块上反弹而不会失去其能量但会对它们(砖块)施加力?
【问题讨论】:
标签:
c++
box2d
game-physics
physics-engine
【解决方案1】:
我也在寻找它,但在 AS3 中 - 我确实找到了我想要的 c++。阅读后,我认为以下是您的意图,即使用 Box2D 物理以恒定速度移动对象。我也会发布链接,尽管用链接回答问题不是一个好习惯,因为它们将来可能会中断。 Constant Speed
b2Vec2 vel = body->GetLinearVelocity();
float desiredVel = 0;
switch ( moveState )
{
case MS_LEFT: desiredVel = -5; break;
case MS_STOP: desiredVel = 0; break;
case MS_RIGHT: desiredVel = 5; break;
}
float velChange = desiredVel - vel.x;
float impulse = body->GetMass() * velChange; //disregard time factor
body->ApplyLinearImpulse( b2Vec2(impulse,0), body->GetWorldCenter() );