C# Xna从阵列一次触发(更新)一个对象

C# Xna从阵列一次触发(更新)一个对象,c#,xna,game-loop,C#,Xna,Game Loop,好的,我有一个子弹对象数组,我想在每次游戏循环运行时更新它。当调用更新方法时,我希望在单击鼠标或按键时发射一颗子弹,但是每次我按下键盘或鼠标上的“发射”按钮时,阵列中的所有对象似乎都会发射,我以前已经成功地做到了这一点,但就我的一生而言,我无法找出哪里出了问题,有什么建议吗 以下是我的游戏更新方法中的代码: for (int i = 0; i < maxbullets; i++) { bullets[i].update_bulets(gametime, Position, velo

好的,我有一个子弹对象数组,我想在每次游戏循环运行时更新它。当调用更新方法时,我希望在单击鼠标或按键时发射一颗子弹,但是每次我按下键盘或鼠标上的“发射”按钮时,阵列中的所有对象似乎都会发射,我以前已经成功地做到了这一点,但就我的一生而言,我无法找出哪里出了问题,有什么建议吗

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

for (int i = 0; i < maxbullets; i++)
{
    bullets[i].update_bulets(gametime, Position, velocity,
                             rotation, viewport, keystate,
                             gamepadstate, bulletsound);
}
for(int i=0;i
好吧,在浏览了我所有的旧文件后,我感到很沮丧(“坦克”双关语)我可以用一个小记号笔来记录我按下点火按钮的次数来解决这个问题。我不只是发布问题并回答它们。顺便说一句,我只是自己设法找到了答案。希望有人发现它和我一样有用,并且我为错误的格式道歉。是时候回到我的项目了:)

if((先前的gamepadstate.IsButtonUp(Buttons.RightTrigger)和&gamepadstate.IsButtonDown(Buttons.RightTrigger))
||(先前的KeyboardState.IsKeyUp(Keys.F)和&keystate.IsKeyDown(Keys.F)))
{
项目符号[currentbullet]。活动=真;
如果(当前项目符号<最大项目符号-1)
{
currentbill++;
播放声音;
}
其他的
{
currentbullet=0;
}
}
foreach(子弹中的子弹)
{
更新Bullets(游戏时间、位置、速度、旋转、视口、bulletsound);
}
        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);
        }