2012-02-06 2 views
1

スプライトが表示されているかどうかを自動的に判断する簡単なツールがCocos内にあるかどうかは疑問です。私は自分でロジックをまとめることができますが、Cocosにはすでにスプライトが表示されているか、別のスプライトの背後に隠れているかどうかを確認するための簡単なテストが組み込まれていればいいと思います。 Cocosは多くの場所でカスタムロジックの必要性を取り除く多くのツールを持っているので、これはそのツールセットの可能性が高いように思えますが、これまでの検索では何も見つかりません。スプライトが画面上に見えるかどうかを判断するためのCocosネイティブメソッド?

zの設定がより高いすべてのスプライトのバウンディングボックスが問題のスプライトのバウンディングボックスを覆っているか隠しているかどうかをテストするのは簡単な場合です。

CGRectIntersectsRect(rect1, rect2); 

を、次いでzオーダーを計算する:

+0

'zOrder'(http://www.cocos2d-iphone.org/api-ref/latest-stable/interface_c_c_node.html#a21434541d824d49ea4e84019f1445727)のチェックと何か関係があるのだろうと思っていますが、 zOrder'はスプライトが何らかの形で関係している場合にのみ機能します(すべてが同じ親を持っている場合)。この議論からヒントを見つけました:http://www.cocos2d-iphone.org/forum/topic/6252 – summea

+0

それは組み合わせですzオーダーのスプライトのバウンディングボックスと、より高いzオーダーのスプライトに関連するスプライトのバウンディングボックスです。 2つのスプライトは異なるz次数を持つことができますが、画面の異なる部分にある場合は両方が表示されます。 – johnbakers

+0

複数のレイヤーを使用しているか、1つだけを使用していますか。 – Haroon

答えて

0

次の2つのrects(スプライトのバウンディングボックス)が交差するかどうかを決定するために、この関数を使用することができます。 あなたが最初のスプライトが第二をカバーどのくらい知って指数を計算することができ、より正確になりたい場合は、次の

Index = (2 * Area (CGRectIntersection(rect 1, rect2)))/(Area(rect1) + Area(rect2)); 

CGRectIntersectionは、他の2つの交差によって生成された矩形を計算します。 インデックスが1の場合、2つの長方形は正確に1つ上のものです。

関連する問題