私は、彼らは2枚の画像を使用ワームで、思い出したよう。色のついた「きれいな」地形と、純粋な白黒のマスクの地形です。ヒット検出は常にマスク上で行われます。
Tank Warsのように実際に地形を崩壊させたい場合は、画像の各列を繰り返して、地形と競技場の底面との間のギャップを検索する必要があります。ギャップが検出された場合は、ギャップの上にある地形を列内の可能な最も低い地点に移動します。
この単純な例は、配列が1の場合は地形が固まり、0の場合は空白を表します。
[1,1,1,1,1,1,0,0,0,0]
は地形が側面から打たれ、穴が作られていると仮定しましょう:この場合、私は地面の上にあることになる要素[0]
に、グランドレベルとして配列の左側を設定しました:
[1,1,0,0,1,1,0,0,0,0]
別の地形の上に浮遊している地形が残っています。浮動小数点を崩壊させるには、配列全体を繰り返し、0(空白)が見つかる最初の位置を追跡します。次に、繰り返し続けるにつれて、1(地形)を発見すると、1を0の位置にシフトするだけです。古い0の位置+ 1を反復してプロセスを繰り返します。
[1,1,1,0,0,1,0,0,0,0]
[1,1,1,1,0,0,0,0,0,0]
これは基本的なアプローチであり、最も効率的なものではありません。移動するほうがはるかに速くなるすべてたとえば、ギャップの上にある地形のインデックスが同時に表示されます。
EDIT:最初のコメントの状態として
、リストの並べ替えがさらに簡単です。私は元の応答をそのまま維持しているので、崩壊している地形の背後にある実際の原理を説明するのに役立ちます。
ちょうど2Dなら、それは画像操作で終わり、地形として使用されるビットマップの一部を消去するだけです。 –
@ LasseV.Karlsen 3D地形破壊に関するリンクを提供できますか?ありがとうございます。 – zionpi
いいえ、できません。ごめんなさい。 –