XNA を使用した最初の 2D ゲームに取り組んでいますが、少し問題があります。スプライトに実行中の効果を与えるために、次のコードを使用してSpriteSheetをスクロールします (実行中):
if (AnimationDelay == 6)
{
if (CurrentFrameR.X < SheetSizeR.X)
{
++CurrentFrameR.X;
}
else
{
CurrentFrameR.Y++;
CurrentFrameR.X = 1;
}
if (CurrentFrameR.Y >= SheetSizeR.Y)
{
CurrentFrameR.X = 0;
CurrentFrameR.Y = 0;
}
AnimationDelay = 0;
}
else
{
AnimationDelay += 1;
}
xPosition += xDeplacement;
}
そして、これらは使用されるオブジェクトです:
Point FrameSizeR = new Point(29, 33);
Point SheetSizeR = new Point(5, 1);
Point CurrentFrameR = new Point(0, 0);
int AnimationDelay = 0;
スプライトが左に実行されているとき、私は異なるスプライトシートを持つ同じコードを持っています。90% の時間は問題なく動作していますが、残りの 10% のスプライト アニメーションはSpriteSheetの 1 つのフレームに両方向 (左右) にとどまり、プログラムを閉じるまで動かなくなります。問題は、それが同時に発生することは決してないため、理由を完全に理解できないことです..時には10、15、30秒後、時には起動時にさえも! 理由はありますか?事前に感謝し、コードの他の部分が必要な場合はお知らせください