XNA循环绘制多个精灵不工作

时间:2013-02-03 16:07:19

标签: sprite xna-4.0

为我在大学的第一学期作业开发一个简单的XNA游戏。然而,我已经用敌人精灵的绘制循环击中了一堵墙。据我所知,所有敌人的精灵都被添加到了game1.cs类的列表中,但只列出了列表中的第一个。

此方法将敌人的实例添加到列表中。在更新方法中,Spawn每秒递增一次。这使得敌人每秒都会顺序产生,直到产生了四个。

public void LoadEnemies()
    {
        int randX = rand.Next(0, 1000);
        int randY = rand.Next(0, 500);

        if (spawn >= 1)
        {
            spawn = 0;

            if (enemyList.Count() < 4)
            {
                enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp1"), new Vector2(randX, randY)));
                enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp2"), new Vector2(randX, randY)));
                enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp3"), new Vector2(randX, randY)));
                enemyList.Add(new NM_Enemy(Content.Load<Texture2D>("Wisp4"), new Vector2(randX, randY)));
            } 
        }

        //Checks if enemies in the list have left the level bounds
        for (int i = 0; i < enemyList.Count; i++)
        {
            if (!enemyList[i].isVisible)
            {
                enemyList.RemoveAt(i);
                i--;
            }
        }
    }

绘制方法

foreach (NM_Enemy enemy in enemyList)
                    {
                        enemy.Draw(gameTime, spriteBatch);
                    }

更新方法

foreach (NM_Enemy enemy in enemyList)
                {
                    enemy.Update(gameTime);
                }

1 个答案:

答案 0 :(得分:0)

您发布的代码段与您的程序说明完全不符。你说那个

  

敌人每秒依次产生,直到产生了四个   但实际上发生的事情是,如果敌人少于四个,则会立即生成四个敌人。此外,它们都是在(randX, randY)生成,而你之间没有打rand.Next(),这意味着你在同一个位置有四个敌人。这也许可以解释为什么你只看到一个 - 它们都是彼此重叠的。尝试在此行上设置断点

enemy.Draw(gameTime, spriteBatch);

并看看敌人的位置。你可能会发现他们都在同一个地方。确保将randX和[{1}}行中的randYenemyList.Add()值换成一些手动输入的值,这样您就可以确定其位置不同,然后查看它们的绘制位置。