在XNA中绘制多个位置递增的精灵
本文关键字:精灵 位置 XNA 绘制 | 更新日期: 2024-04-23 18:57:42
所以我是XNA的新手,正在尝试以最简单的方式在屏幕上绘制多个精灵。我希望每个精灵在X轴上递增,这样我就可以在屏幕上绘制多个精灵。
我已经定义:
Vector2 pos;
在LoadContent
函数中,我有:
pos = new Vector2(0, 0);
在Draw
中,我有:
spriteBatch.Draw (circle, pos, Color.White); //Draws sprite to screen in correct position
spriteBatch.Draw(circle, (pos.X += 1), Color.White); //causes error and doesnt draw
希望我已经很好地解释了这一点,你可以看到我正在尝试做什么,编译器不同意(pos.X += 50)
(我试图将X
的位置增加50)。我知道我可以用更长的方法,为每次抽奖创建一个新的Vector2
,但这会创建多行我认为肯定是不必要的代码,必须有这样的快速方法才能做到这一点?
Draw的方法签名要求第二个参数是Vector2,对吗?
如果是,则(位置X+=1)不是Vector2。这是一个增加pos-VVector2变量的X参数的语句,但语句不返回Vector2对象的实例
编辑:代码如下:
public void DrawSprites()
{
// setup circle here
// setup spritebatch here
// setup initial pos here
// setup MAX_ITERATIONS here
var INCREMENT_VALUE = 50;
for (var i = 0; i < MAX_ITERATIONS; i++) {
var iteratedPos = pos + new Vector2((INCREMENT_VALUE * i), 0); // per Nikola's comment
spriteBatch.Draw(circle, iteratedPos, 0), Color.White);
}
}
您需要列出纹理的绘制矩形。
//implement Texture2D (called "image") and SpriteBatch (called "spriteBatch")
List<Rectangle> rectangles = new List<Rectangle>();
const int ITERATIONS = 10; //or whatever you want the iterations to be
const int INCREMENT_VALUE = 50; //again, whatever you want it to be
for (int i = 0; i < ITERATIONS; i++)
{
for (int j = 0; j < rectangles.Count; j++)
{
rectangles[j].X += INCREMENT_VALUE * i;
spriteBatch.Draw(image, rectangles[j], Color.White);
}
}
如前所述,您需要一个矩形列表,其中包含所有图像矩形。希望我帮忙,祝你好运!