在c#失去生命(一次失去3条生命)

时间:2013-04-17 15:38:38

标签: c# debugging xna

基本上我有一个简单的砖破坏者游戏,用球拍和球。

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

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个生命,调整了这个部分很多,但仍然无法使它工作。

我确信这是一个简单的解决方法,但我刚刚开始编程。我已经尝试了谷歌的C#生活等等,但是有一款名为“生命游戏”的游戏不断涌现,我无法得到我想要的东西。任何帮助将不胜感激!

这是整个方法。

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); 
    } 
}

1 个答案:

答案 0 :(得分:2)

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

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

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