Вот метод обновления моего класса Player:
timer += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
KeyboardState state = Keyboard.GetState();
if (state.IsKeyDown(Keys.Up)) {
if (currentFrame < 7) currentFrame = 7;
if (timer >= delay) {
if (currentFrame < 13) {
currentFrame++;
}
else if (currentFrame == 13) {
currentFrame = 7;
}
timer = 0;
}
}
else {
if (currentFrame > 7) currentFrame = 1;
if (timer >= delay) {
if (currentFrame < 6) {
currentFrame++;
}
else if (currentFrame == 6) {
currentFrame = 1;
}
timer = 0;
}
}
sourceRect.X = currentFrame * 48 - 48; //I subtract 48 here to make the first frame 1 not 0.
А вот метод рисования:
spriteBatch.Draw(texture, position, sourceRect, Color.White);
Я пытаюсь сделать так, чтобы при нажатии клавиши вверх отображалась анимация с 7 по 13 кадр (из листа спрайтов). Когда клавиша «вверх» не нажата, рисуется анимация с 1 по 6 кадр.
Проблема: когда я продолжаю нажимать клавишу «вверх», она работает нормально, но когда я нажимаю клавишу «вверх» только один раз , анимация зависает на 7-м кадре.