Я работаю над своей первой 2D-игрой с XNA, и у меня есть небольшая проблема. Чтобы придать спрайту бегущий эффект, я прокручиваю 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;
У меня есть тот же код с другим SpriteSheet, когда спрайт работает влево. Все работает нормально, я бы сказал, что в 90% случаев, но в других 10% анимация спрайтов остается на одном кадре SpriteSheet в обоих направлениях (влево и вправо) и остается неподвижной, пока я закройте программу. Дело в том, что я не могу понять, почему, поскольку это никогда не происходит в один и тот же момент. Иногда через 10, 15, 30 секунд, а иногда даже при загрузке! Есть идеи, почему? Заранее спасибо и дайте мне знать, если вам нужны какие-либо другие части кода