XNA でスプライト シート アニメーションを使用しており、ピクセル パーフェクト コリジョンを使用したいと考えています。私の問題は、使用しているスプライトシートの一部をチェックするのではなく、スプライトシートの現在のピクセルが透明かどうかをピクセルの完全な衝突がチェックすることです。これは私のコードです:
blockTextureData = new Color[shot.texture.Width * shot.texture.Height];
shot.texture.GetData(blockTextureData);
personTextureData = new Color[player2.texture.Width * player2.texture.Height];
player2.texture.GetData(personTextureData);
if (IntersectPixels(player2.CollissionBox, personTextureData, shot.CollissionBox, blockTextureData))
スプライト シートの特定の部分を選択し、それに対する衝突をチェックする方法を知りたいです。この MSDN ガイドを使用しました。
編集:私はそれを理解することができました、代わりにこれを使用しました
src = new Rectangle(frame, 0, 87, 100);
player.texture.GetData<Color>(0, src, personTextureData,0, 87*100);
フレームは、幅と高さの2つの写真を含むスプライトシートを使用するため0
、最初と2番目など、開始した場合です。87
2*87
100
Edit2: 問題は、一度ピクセルパーフェクトをヒットすると機能しなくなるため、1 ヒットでしか機能しないことです。