У меня проблемы с переводом ходьбы в режим ожидания.
Может быть, есть лучший способ сделать это?
Проблема : я могу проверить, не нажимаются ли клавиши на клавиатуре, но при этом анимация ходьбы отображает только первый кадр, а не полную анимацию.
Вопрос: Как я могу изменить это так, чтобы, когда пользователь закончил ходить, он изменил состояние обратно на «Idle», не конфликтуя с анимацией ходьбы влево и вправо.
private void UpdateMovement(KeyboardState aCurrentKeyboardState, GameTime gameTime)
{
timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds; //Framerate control
if (timeSinceLastFrame > millisecondsPerFrame) //Framerate control
{
timeSinceLastFrame -= millisecondsPerFrame; //Framerate control
//Idle if no keys are down
if (mCurrentState == State.Idle)
{
Position.Y = 210;
currentImageIndex++;
if (currentImageIndex < 17 || currentImageIndex > 23)
currentImageIndex = 17;
}
//Walk Left
if (aCurrentKeyboardState.IsKeyDown(Keys.Left))
{
mCurrentState = State.Walking;
if (currentImageIndex < 8 || currentImageIndex > 15)
currentImageIndex = 8;
Position.Y = 200;
currentImageIndex++;
Position.X += MOVE_LEFT;
if (currentImageIndex > 15)
currentImageIndex = 8;
}
//Walk Right
if (aCurrentKeyboardState.IsKeyDown(Keys.Right))
{
mCurrentState = State.Walking;
if (currentImageIndex > 7)
currentImageIndex = 0;
Position.Y = 200; ;
currentImageIndex++;
Position.X += MOVE_RIGHT;
if (currentImageIndex > 7)
currentImageIndex = 0;
}
if (aCurrentKeyboardState.IsKeyDown(Keys.None))
mCurrentState = State.Idle;
}
}