Xna一次一个地从一个数组中触发(更新)对象

时间:2012-08-26 22:04:31

标签: c# xna game-loop

好的,所以每次游戏循环运行时,我都会想要更新一系列子弹对象。当调用更新方法时,我想在我单击鼠标或按键时触发一个子弹,但每次按下键盘或鼠标上的开火按钮时,阵列中的所有对象似乎都会触发,我已设法做到这之前,但对于我的生活,我无法弄清楚我哪里出错了,有什么建议吗?

以下是我游戏更新方法中的代码:

for (int i = 0; i < maxbullets; i++)
{
    bullets[i].update_bulets(gametime, Position, velocity,
                             rotation, viewport, keystate,
                             gamepadstate, bulletsound);
}

1 个答案:

答案 0 :(得分:0)

好吧,在我浏览了所有旧文件后,我很坦然(“坦克”双关语意图)能够使用一个小标记解决它,以跟踪我按下按钮的次数。我不只是发布问题并回答它们顺便说一句,我只是设法找到答案,我希望有人发现它像我一样有用,我为糟糕的格式道歉。是时候回到我的项目了:))

        if ((previousgamepadstate.IsButtonUp(Buttons.RightTrigger) && gamepadstate.IsButtonDown(Buttons.RightTrigger))
            || (previouskeyboardstate.IsKeyUp(Keys.F) && keystate.IsKeyDown(Keys.F)))
        {

            bullets[currentbullet].alive = true;

            if (currentbullet < maxbullets - 1)
            {
                currentbullet++;
                bulletsound.Play();
            }
            else
            {
                currentbullet = 0;
            }
        }

        foreach (Bullets bullet in bullets)
        {
            bullet.update_bulets(gametime, Position, velocity, rotation, viewport, bulletsound);
        }