为什么我不能从我的名单中抽取超过1个敌人?

时间:2018-03-28 16:16:13

标签: c# monogame

我的课程:

public Enemy(Texture2D texture, int delay, int elapsedTime, int frameX, int frameY, float X, float Y, float gravity, float speedX, float speedX2) : base(texture, delay, elapsedTime, frameX, frameY, X, Y, gravity, speedX, speedX2)
{
    this.enemyPos = new Vector2(X,Y);
}

    public void Draw(SpriteBatch sp)
    {
        sp.Draw(texture, enemyPos, sourceRect, Color.Red);
    }

在我的主课程中,我创建了我的列表并创建了10个敌人:

List<Enemy> lista = new List<Enemy>();
for(int i = 0; i < 10; i++)
{
    enemy = new Enemy(Content.Load<Texture2D>("animation"), 500, 0, 0, 0, 100*i, 0, 1, 4f, 4f);
    lista.Add(enemy);
}

然后我尝试绘制它们

foreach(Enemy enemy in lista)
{
    enemy.Draw(spriteBatch);
}

我得到的结果是我只能看到被抽出的最后一个。我对编程很陌生,所以任何帮助都会有所帮助。

2 个答案:

答案 0 :(得分:4)

我已经解决了我的问题。问题是我没有更新我的所有敌人......我只更新了其中一个我创建的1解释了为什么我只能看到我创建的10个敌人中的一个。我用一个foreach循环解决了我的问题,这个循环遍历每次更新中的所有敌人。

foreach(Enemy e in lista)
{
    e.Update(player);
    e.updateAnimation(gameTime);
    e.Collision(gameTime, map.CollisionTiles);
}

答案 1 :(得分:1)

我认为你正在绘制10件事,它只是在同一个地方做了10次。结果看起来像一件事。当你添加数据时,你需要改变它,所以你可以告诉另一个敌人。