Создание бомбы - Cocos2d / Box2d - PullRequest
2 голосов
/ 02 августа 2011

Я все еще пытаюсь понять, как создать симулятор бомбы. У меня есть мяч и бомба, когда мяч сталкивается с бомбой, бомба взрывается и заставляет мяч двигаться в любом направлении.

Сейчас я использую ApplyLinearImpulse, но я вынужден выбрать конкретное направление. Мне просто нужно, чтобы мяч был направлен в каком бы направлении он не был брошен.

Например,

Мяч был брошен в левую верхнюю часть бомбы, а затем мяч направлен вверх и влево. Мяч был брошен в левую нижнюю часть бомбы, затем мяч сброшен влево.

По сути, это просто бомба. Кто-нибудь может сказать мне, как это сделать? Я новичок в Box2d.

Это то, что я сейчас использую.

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

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

1 Ответ

4 голосов
/ 02 августа 2011

Тебе нужна математика.Предполагая, что позиции тела и бомбы находятся в 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...