为我在大学的第一学期作业开发一个简单的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);
}
答案 0 :(得分:0)
您发布的代码段与您的程序说明完全不符。你说那个
敌人每秒依次产生,直到产生了四个 但实际上发生的事情是,如果敌人少于四个,则会立即生成四个敌人。此外,它们都是在
(randX, randY)
生成,而你之间没有打rand.Next()
,这意味着你在同一个位置有四个敌人。这也许可以解释为什么你只看到一个 - 它们都是彼此重叠的。尝试在此行上设置断点
enemy.Draw(gameTime, spriteBatch);
并看看敌人的位置。你可能会发现他们都在同一个地方。确保将randX
和[{1}}行中的randY
和enemyList.Add()
值换成一些手动输入的值,这样您就可以确定其位置不同,然后查看它们的绘制位置。