在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,但这会创建多行我认为肯定是不必要的代码,必须有这样的快速方法才能做到这一点?

在XNA中绘制多个位置递增的精灵

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

如前所述,您需要一个矩形列表,其中包含所有图像矩形。希望我帮忙,祝你好运!