如何修复代码中的“跳跃”故障?

时间:2012-04-28 14:47:39

标签: c# xna-4.0

http://pastebin.com/YTiNw7rX

如果您测试代码,将挡板一直推到屏幕顶部,然后让它移动,那么挡板会向下跳几个像素。而我似乎无法弄清楚如何解决这个问题。我想它与纹理有关。

编辑:谢谢

1 个答案:

答案 0 :(得分:1)

这就是:

  1. 你按住了键。

  2. 这些功能会检查和/或调整当前Y

  3. 该功能会根据您的按键更新当前Y

  4. 屏幕上显示当前Y

  5. 你放开钥匙。

  6. 这些功能会检查和/或调整当前Y

  7. 屏幕上显示更正后的Y,导致之前的Y跳转。

  8. 因此,您需要在检查之前更新当前的Y ,而不是之后。

    protected override void Update(GameTime gameTime)
    {
        // Allow the game to exit.
        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();
    
        // Update the paddles according to the keyboard.
        if (Keyboard.GetState().IsKeyDown(Keys.Up))
            PongPaddle1.Y -= paddleSpeed;
    
        if (Keyboard.GetState().IsKeyDown(Keys.Down))
            PongPaddle1.Y += paddleSpeed;
    
        // Update the paddles according to the safe bounds.
        var safeTop = safeBounds.Top - 30;
        var safeBottom = safeBounds.Bottom - 70;
    
        PongPaddle1.Y = MathHelper.Clamp(PongPaddle1.Y, safeTop, safeBottom);
        PongPaddle2.Y = MathHelper.Clamp(PongPaddle2.Y, safeTop, safeBottom);
    
        // Allow the base to update.
        base.Update(gameTime);
    }