0

奇妙な問題があります。

スプライト アニメーションの 4 つのフレームを持つテクスチャがあります。各フレームは TextureRegion としてロードされます。

ほとんどの場合、アニメーションは問題なく再生されますが、1 つのフレームに大量のテクスチャが描画されることがあります。

これが私が意味することの例です:

ここに画像の説明を入力

ご覧のとおり、UFO の左側に赤いバーがあります。その赤いバーは、私のコードに記載されている TextureRegion 境界の外側にあるフレームの一部です。(赤い枠は、すべての角に透明性があるため、測定しやすくするためにあります)

テクスチャは次のとおりです。

ここに画像の説明を入力

上記のスプライト シートでは、上部のスライドの赤いフレームの境界は 0、0、202、71 です。アニメーションのフレームの TextureRegion は 1、1、200、69 です。私の知る限り、赤枠が表示されます。

回避策として、必要な測定値が得られたので、フレームを透明に設定することができますが、後で再度測定する必要がある場合、またはスプライト画像を置き換える必要がある場合に備えて、赤いフレームを保持したいと思います。 、そして実際には回避策は単なる応急処置ですが、私は問題の根本に対処するための適切な解決策を見つけたいと思っています. (たとえば、密集したテクスチャでは、別のスプライト フレームからピクセルを描画したり、別のスプライトやメニュー イメージなどからピクセルを描画したりする場合があります)。

最後に、役に立つ場合に備えて、SpriteBatch が画像を表示するときに、UFO の動きに基づいて回転を適用します (左に移動すると左に傾くなど)。グリッチのある赤いバーは、上、右、下、または左にランダムに表示されることがありますが (ほとんどの場合、まったく表示されません)、UFO の回転がゼロの場合にのみ表示されるようです。(繰り返しますが、回転が 0 かどうかを確認するチェックを含めてから、回転の数値なしで SpriteBatch.draw() メソッドを呼び出すことができますが、それも問題の根本に対処するのではなく、症状を治療することになります)。

学んだマスターから何か考えはありますか?

4

1 に答える 1