C#XNA在随机位置绘制多个精灵

时间:2014-07-02 06:58:08

标签: c# xna

我正在XNA中创建一个游戏,并希望在随机位置绘制多个精灵。我遇到的问题是,每次调用Draw()函数时,精灵都会在新位置重绘。这使它们随机地在屏幕上闪烁。我希望他们画一次并留在那个位置。

我创建了一个List来保存精灵:

List<Texture2D> kiwis = new List<Texture2D>();

然后在LoadContent()函数中,我将sprite添加到列表中:

 kiwi = Content.Load<Texture2D>("Sprites/kiwi");
 if (kiwis.Count() < 4)
 {
      kiwis.Add(kiwi);
 }

然后在Draw()中,我有:

foreach (Texture2D kiwi in kiwis)
{
    spriteBatch.Draw(kiwi, kiwiPosition, Color.White);                                          
}

这是kiwiPosition Vector2:

 kiwiPosition = new Vector2(random.Next(30, 610), random.Next(30, 450));

提前致谢:)

1 个答案:

答案 0 :(得分:2)

除了我的评论,请根据需要插入和替换以下内容

public class Fruit
{
     private Vector2 pos;
     public Vector2 Position
     {
         get{return pos;}
         set{pos = value;}
     }
     public Texture2D Texture {get;set;}

     public Fruit(Texture2D tex, Vector2 pos)
     {
         Position = pos;
         Texture = tex;
     }
}
List<Fruit> kiwis = new List<Fruit>();

kiwi = Content.Load<Texture2D>("Sprites/kiwi");
if (kiwis.Count() < 4)
{
    kiwis.Add(new Kiwi(kiwiTex, 
                       new Vector2(random.Next(30, 610), random.Next(30, 450)));
}

foreach (Fruit kiwi in kiwis)
{
    spriteBatch.Draw(kiwi.Texture, kiwi.Position, Color.White);  
}

这种方法与您当前的方法之间的区别在于,您的位置只会设置一次而不是每帧一次