我的课程:
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);
}
我得到的结果是我只能看到被抽出的最后一个。我对编程很陌生,所以任何帮助都会有所帮助。
答案 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次。结果看起来像一件事。当你添加数据时,你需要改变它,所以你可以告诉另一个敌人。