创建一个炸弹 - Cocos2d / Box2d

时间:2011-08-02 00:01:57

标签: iphone cocos2d-iphone

我还在试图弄清楚如何制作炸弹模拟。我有一个球和一个炸弹,当球与炸弹碰撞时,炸弹爆炸并迫使球被扔进去。

现在我正在使用ApplyLinearImpulse,但我被迫选择一个特定的方向。我只需要将球强行引入它的任何方向。

例如,

球被投掷在炸弹的左上方,然后球被迫向上并向左。 球被扔在炸弹的左下方,然后球被迫向下并向左移动。

基本上,它只需要成为炸弹。谁能告诉我怎么做?我是Box2d的新手。

这就是我现在正在使用的。

-(void) explodeBomb
{
    b2Vec2 force = b2Vec2(-20,20); // give the direction for the force.

    _ballBody->ApplyLinearImpulse(force, _ballBody->GetWorldCenter());
}

1 个答案:

答案 0 :(得分:4)

你需要一些数学。假设身体和炸弹的位置分别为bodyPositionbombPosition

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());