Ето метода за актуализиране на моя клас 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-ия кадър.