C#XNA太空入侵者。坦克子弹没有显示

时间:2016-04-11 00:27:11

标签: c# xna

我的代码中的子弹似乎正在射击入侵者,因为入侵者消失了。然而,没有子弹从坦克中出来并击中入侵者。我不知道子弹去了哪里。

初始化子弹代码:

recBullet = new Rectangle();
isRight = true;
isShotFired = false;
isBulletOut = false;
isBulletAlive = true;

更新代码:

 KeyboardState keys = Keyboard.GetState();
 if ((keys.IsKeyDown(Keys.Space) == true || oldState.IsKeyUp(Keys.Space) == false))
        {
            recBullet.X = recTank.X + recTank.Width / 2;
            recBullet.Y = screenHeight;
            isShotFired = true;
            isBulletAlive = true;
        }if (isShotFired)
        {
            recBullet.Y -= 10;
        }
        if (recBullet.Y <= 0)
        {
            isShotFired = false; 
        }
        for (int x = 0; x < numberOfXInvaders; x++)
        {
            for (int y = 0; y < numberofYInvaders; y++)
            {
                if (isBulletAlive)
                {
                    if (recBullet.Intersects(recInvader[x, y]))
                    {
                        if (!isInvaderDead[x, y])
                        {
                            isInvaderDead[x, y] = true;
                            isBulletAlive = false;
                        }

                    }
                }
            }
        }
oldState = keys;

绘制代码:

if (isBulletAlive)
        {
            spriteBatch.Draw(texBullet, recBullet, Color.Green);
        }

感谢我能为此提供任何帮助!谢谢。

1 个答案:

答案 0 :(得分:1)

执行以下步骤:

  1. 首先检查您的子弹图像是否正确加载
  2. 尝试在所有图片上绘制它。把它放在Draw方法的最后一部分。
  3. 如果它仍然不存在,请尝试注释掉所有的spriteBatch.Draw,并为你的子弹留下抽奖。如果它在那里,试着检查你的抽签逻辑。有些图像可能会重叠。
  4. 如果步骤2和3失败,请重复步骤1