Использование физики бурундука - как я могу сказать силу двух сталкивающихся объектов - PullRequest
2 голосов
/ 22 апреля 2010

Если у меня есть два объекта в бурундуке (я использую cocos2d-iphone), когда я обнаружу, что они столкнулись, как я могу определить, насколько сильно они бьют друг друга?

Я хочу, чтобы их сила (в зависимости от скорости) знала ущерб от столкновения.

Я видел дискуссию о том, как это сделать, но никогда не работал конкретный код (и я не мог заставить его работать, хотя думал, что знаю, что делаю). Для полноты, вот код, который я я использую, чтобы определить скорость столкновения, так, как точно я пойду на обнаружение Силы столкновения?

- (BOOL) handleCollisionBetweenBalls:(CollisionMoment)moment arbiter:(cpArbiter*)arb space:(cpSpace*)space {
  JjrFootprint(@"handleCollisionBetweenBalls");
    if (moment == COLLISION_BEGIN) {
    JjrLog(@"Balls Collide");
    CP_ARBITER_GET_SHAPES(arb, a, b);
    cpVect va;
    cpVect vb;
    va = a->body->v;
    vb = b->body->v;
    cpVect vNet = cpvadd(va,vb);
    cpFloat Length = cpvlength(vNet);
    // 7 = barely touching
    // 1000 = hard
    if (Length > 100) {
      [[SimpleAudioEngine sharedEngine] playEffect:@"board.wav"];
    }
  }
    return YES;
}

Спасибо, JJ

1 Ответ

2 голосов
/ 23 апреля 2010

http://chipmunk -physics.net / выпуск / Бурундук-6.x / Бурундук-6.0.3-Docs / # CollisionCallbacks-Обработчики

Вы можете получить импульс столкновения только из обратного вызова пост-решения.

...