Я работаю над своей первой 2D-игрой XNA, и у меня есть небольшая проблема. Если я прыгаю, мой спрайт прыгает, но не падает. И у меня также есть еще одна проблема: пользователь может удерживать пробел , чтобы прыгнуть так высоко, как он хочет, и я не знаю, как удержать его от этого. Вот мой код: Прыжок:
if (FaKeyboard.IsKeyDown(Keys.Space))
{
Jumping = true;
xPosition -= new Vector2(0, 5);
}
if (xPosition.Y >= 10)
{
Jumping = false;
Grounded = false;
}
Действительно простая базовая гравитация:
if (!Grounded && !Jumping)
{
xPosition += new Vector2(1, 3) * speed;
}
Вот где заземленный установлен на Истина или Ложь при столкновении
Rectangle MegamanRectangle = new Rectangle((int)xPosition.X, (int)xPosition.Y, FrameSizeDraw.X, FrameSizeDraw.Y);
Rectangle Block1Rectangle = new Rectangle((int)0, (int)73, Block1.Width, Block1.Height);
Rectangle Block2Rectangle = new Rectangle((int)500, (int)73, Block2.Width, Block2.Height);
if ((MegamanRectangle.Intersects(Block1Rectangle) || (MegamanRectangle.Intersects(Block2Rectangle))))
{
Grounded = true;
}
else
{
Grounded = false;
}
Заземленный бул и Гравитация были протестированы и работают. Есть идеи, почему? Заранее благодарим вас и не стесняйтесь спрашивать, нужна ли вам еще одна Часть Кодекса.