2

シマリスに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

コリジョン インパルスはポスト ソルブ コールバック内からのみ取得できます。

于 2010-04-23T13:14:54.497 に答える