Прыжки против. Gravity

Я работаю над своей первой 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;
        }

Заземленный бул и Гравитация были протестированы и работают. Есть идеи, почему? Заранее благодарим вас и не стесняйтесь спрашивать, нужна ли вам еще одна Часть Кодекса.

5
задан 一二三 1 December 2011 в 09:50
поделиться