我仍在尝试弄清楚如何创建炸弹模拟。我有一个球和一个炸弹,当球与炸弹碰撞时,炸弹会爆炸并迫使球朝球被扔进去的方向移动。
现在我正在使用ApplyLinearImpulse,但我被迫选择一个特定的方向。我只需要迫使球朝它被扔进去的方向移动。
例如,
球被扔到炸弹的左上方,然后球被迫向上并向左移动。 将球扔到炸弹的左下侧,然后将球向下推向左侧。
基本上,它只需要是一颗炸弹即可。谁能告诉我该怎么做?我是 Box2d 的新手。
这就是我现在正在使用的。
-(void) explodeBomb
{
b2Vec2 force = b2Vec2(-20,20); // give the direction for the force.
_ballBody->ApplyLinearImpulse(force, _ballBody->GetWorldCenter());
}
最佳答案
你需要一些数学知识。假设主体和炸弹的位置分别为 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());
关于iphone - 创建炸弹 - Cocos2d/Box2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905880/