キャラクターが走る、ジャンプするなどのアニメーションを持っているゲームを作っています。
アニメーション中に衝突を検出する方法はありますか? アイドル状態、ランニング状態、ジャンプ状態で形を変えているからです。
解決策を探している間に、これら2つのSprite Helperを設立しました
キャラクターが走る、ジャンプするなどのアニメーションを持っているゲームを作っています。
アニメーション中に衝突を検出する方法はありますか? アイドル状態、ランニング状態、ジャンプ状態で形を変えているからです。
解決策を探している間に、これら2つのSprite Helperを設立しました
最善の方法は、スプライトに独自のバウンディング ボックスを定義し、特定のサイズを決定して、レベル内の他の形状に対してテストすることです。
それ以外の場合は、実際のスプライトの 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
}
}