-4

基本上,我有一个简单的破砖游戏,里面有桨、球和砖块。

我用这段代码设置了生活:

protected override void Update(GameTime gameTime)
    {

        if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
            this.Exit();

        paddle.Update();
        ball.Update();

        foreach (Brick brick in bricks)
        {
            score += brick.CheckCollision(ball);
        }

        ball.PaddleCollision(paddle.GetBounds());

        if (ball.OffBottom())
        {
            --lives;
            if (lives == 0)

                StartGame();
            base.Update(gameTime);
        }
    }

我遇到的问题是我一次失去了 3 条生命,对这部分进行了很多调整,但仍然无法使其正常工作。

我确信这是一个简单的解决方法,但我刚刚开始编程。我已经在 Google 上尝试过 C# 生活等,但是有一个名为 game of lives 的游戏不断出现,我无法以这种方式获得我想要的东西。任何帮助将不胜感激!

这是整个方法。

protected override void Update(GameTime gameTime) 
{ 

    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
        this.Exit(); 

    paddle.Update(); 
    ball.Update(); 

    foreach (Brick brick in bricks) 
    { 
        score += brick.CheckCollision(ball); 
    } 

    ball.PaddleCollision(paddle.GetBounds()); 

    if (ball.OffBottom()) 
    { 
        --lives; 

        if (lives == 0) 
            StartGame(); 

        base.Update(gameTime); 
    } 
}
4

1 回答 1

2

我以前遇到过这个问题,一般的解决方案是: -

  • 当球与砖碰撞 > 从生命中减去 1,然后...
  • ...启动一个计时器,并设置一个阈值,比如 10 毫秒
  • 然后是类似的东西if ball intersects brick and timer <= threshold, dont subtract from lives
  • 然后当计时器达到阈值>重置计时器并允许再次减少生命值

不幸的是,我没有代码解决方案,但是这个伪代码足以解决问题

于 2013-04-17T15:44:18.357 回答