2

如果我在花栗鼠中有两个物体(我正在使用 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

4

1 回答 1

2

http://chipmunk-physics.net/release/Chipmunk-6.x/Chipmunk-6.0.3-Docs/#CollisionCallbacks-Handlers

您只能从 postsolve 回调中获取碰撞脉冲。

于 2010-04-23T13:14:54.497 回答