Здесь мой метод получить состояние клавиатуры и изменить текстуру, на основе которой нажата клавиша.Изменить текстуру на ключе вниз
private void CheckKeyboardAndUpdateMovement()
{
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyUp(Keys.Left)) { ChangeTexture(1); }
if (keyboardState.IsKeyUp(Keys.Right)) { ChangeTexture(2); }
if (keyboardState.IsKeyDown(Keys.Left))
{
Movement -= Vector2.UnitX;
ChangeTexture(3);
}
if (keyboardState.IsKeyDown(Keys.Right))
{
Movement += Vector2.UnitX;
ChangeTexture(4);
}
if ((keyboardState.IsKeyDown(Keys.Space) || keyboardState.IsKeyDown(Keys.Up)) && IsOnFirmGround())
{
Movement = -Vector2.UnitY * JumpHeight;
}
}
Это работает, если направление нажимаются, но не делает свою собственную работу, когда не нажата ничего (просто потому, что оба IsKeyUp
истинны). Только порядок дел предотвращает показ статической текстуры при перемещении спрайта ... Вопрос в том, как я могу решить проблему? У меня уже есть идея, но мне она совсем не нравится ...
Что это за четыре текстуры? И, что более важно, что должна делать ваша игра, когда ничего не нажимается? Я не понимаю. – pinckerman
Это текстура для (1) «спрайта стоять неподвижно слева», (2) «спрайт стоять вправо», (3) «спрайт идет влево», (4) «спрайт идет вправо» ». Когда ничего не нажимается, оно должно стоять неподвижно, но в последнем направлении. – SubjectDelta
Yap, определенно лучше, и ваше решение не так уж плохо. – pinckerman