2010-12-18 21 views
0

私はこれらのメソッドを持つSpriteクラスの配列を持っています:xy、、heightです。それらは彼のzプロパティに基づいてソートされます。最後は上にある。私は画面サイズも持っています。特定のスプライトが表示されているかどうかはどのように知ることができますか?スプライトオブジェクトが表示されているかどうかを確認するには?

+0

は、シナリオでスプライトを見えないようにする方法と、なぜコントロールしたいのかを説明しています。それは別のスプライトの後ろに(Zで)完全にあるからですか?それは画面の境界から外れているからですか?展開してください。 – tokland

答えて

2

「動作させる」最も簡単な方法は、逆Zオーダーでレンダリングすることです。それは最も近い最後です。

そうでなければ、N^2の問題があります。これを最適化するには、オクルージョンツリーを作成します。

もう1つのオプションは、バッファの深さテストです。

class Sprite 
    def occluded?(other) 
    # check collision in X and Y 
    # if they are colliding and self.z < other.z then self is partially or fully occluded 
    end 
end 
+1

しかし、この順序でレンダリングすると、オーバードローに問題があります。最初に描画する[z-culling](http://en.wikipedia.org/wiki/Z-buffering#Z-culling)を実行すると、完全に表示されていない描画を避けることができます。 (しかし、従来のz-cullingでは、ピクセル単位のアクセスが使用されていた可能性があります。 – Phrogz

関連する問題