будет держать этот короткий и простой:Monogame - Key «Pressed» вместо «Держать», чтобы прыгать
У меня есть 2D игры с подвижным характером, и я написал некоторый код, чтобы мой игрок прыгать, как так:
if (Keyboard.GetState().IsKeyDown(Keys.Space) && hasJumped == false)
{
sound.Play(volume, pitch, pan); // plays jumping sound
position.Y -= 5f; // position of jump
velocity.Y = -10.5f; // velocity of jump
hasJumped = true;
}
Однако, когда я зажмите Space Bar, мой игрок будет продолжать прыгать, когда он попадает на землю, но я хочу, чтобы мой игрок только прыгать раз в течение срока действия удерживая Пробел , а затем снова нажать его, чтобы прыгать.
Я ценю любую помощь.
UPDATE
Моя скорость сбрасывается в одном из моих столкновений, если операторы в пределах моей Collision()
функции:
if (rectangle.touchTopOf(newRectangle))
{
rectangle.Y = newRectangle.Y - rectangle.Height;
velocity.Y = 0f; // velocity reset
hasJumped = false;
}
При объявлении пробелаДалее, в каком значении 'bool' вы его устанавливаете? Кажется, это работает, пока мой игрок находится в воздухе. – toadflax
Я бы сказал, что это ложь, но это не должно влиять ни на что, как только вы нажали пробел. – DeadlySurprise