在随机位置绘制多个精灵

本文关键字:精灵 绘制 随机 位置 | 更新日期: 2023-09-27 18:11:09

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

我已经创建了一个列表来保存精灵:

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

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

 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));

提前感谢:)

在随机位置绘制多个精灵

除了我的注释外,根据需要插入并替换以下内容

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);  
}

这个方法和你当前的方法的区别是,你的位置只会被设置一次,而不是每帧一次