0

キャラクターが走る、ジャンプするなどのアニメーションを持っているゲームを作っています。

アニメーション中に衝突を検出する方法はありますか? アイドル状態、ランニング状態、ジャンプ状態で形を変えているからです。

解決策を探している間に、これら2つのSprite Helperを設立しました

物理エディタ

4

1 に答える 1

0

最善の方法は、スプライトに独自のバウンディング ボックスを定義し、特定のサイズを決定して、レベル内の他の形状に対してテストすることです。

それ以外の場合は、実際のスプライトの CGRect を返すプロパティsprite.boundingBoxを使用できますが、ツリーによると、これは現在の変換スタックに関連していると思いますCCNode。多くの状況で機能しますが、アニメーション フェーズに応じたサイズが大きく変化する場合は機能しません。

したがって、特定の境界ボックスを選択します。

CGSize playerBounds = CGSizeMake(20,20);
CGRect bound = CGRectMake(player.position.x, player.position.y, playerBounds.width, playerBounds.height);
// or CGRect bound = player.boundingBox

あなたのレベルに対してそれをテストしてください:

for (CCSprite *levelPiece in pieces.children) {
  if (CGRectIntersectsRect(bound, levelPiece.boundingBox)) {
    // they're colliding
  }
}
于 2013-10-18T13:37:15.197 に答える