我正在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));
提前致谢:)
答案 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);
}
这种方法与您当前的方法之间的区别在于,您的位置只会设置一次而不是每帧一次