我还在试图弄清楚如何制作炸弹模拟。我有一个球和一个炸弹,当球与炸弹碰撞时,炸弹爆炸并迫使球被扔进去。
现在我正在使用ApplyLinearImpulse,但我被迫选择一个特定的方向。我只需要将球强行引入它的任何方向。
例如,
球被投掷在炸弹的左上方,然后球被迫向上并向左。 球被扔在炸弹的左下方,然后球被迫向下并向左移动。
基本上,它只需要成为炸弹。谁能告诉我怎么做?我是Box2d的新手。
这就是我现在正在使用的。
-(void) explodeBomb
{
b2Vec2 force = b2Vec2(-20,20); // give the direction for the force.
_ballBody->ApplyLinearImpulse(force, _ballBody->GetWorldCenter());
}
答案 0 :(得分:4)
你需要一些数学。假设身体和炸弹的位置分别为bodyPosition
和bombPosition
:
double diffX = bodyPosition.x - bombPosition.x;
double diffY = bodyPosition.y - bombPosition.y;
double distance = sqrt(diffX * diffX + diffY * diffY);
double normalizedX = diffX / distance;
double normalizedY = diffY / distance;
现在假设您要应用20
单位的力:
float factor = 20.0f;
b2Vec2 force(normalizedX * factor, normalizedY * factor);
_ballBody->ApplyLinearImpulse(force, _ballBody->GetWorldCenter());