C# 在XNA中以位置增量绘制多个精灵

C# 在XNA中以位置增量绘制多个精灵,c#,xna,xna-4.0,C#,Xna,Xna 4.0,所以我是XNA的新手,正在尝试以最简单的方式在屏幕上绘制多个精灵。我希望每个精灵在X轴上递增,以便在屏幕上绘制多个精灵 我定义了: vector2pos; 在LoadContent功能中,我有: pos=新向量2(0,0); 在Draw中,我有: spriteBatch.Draw(圆圈、位置、颜色、白色)//将精灵绘制到屏幕的正确位置 spriteBatch.Draw(圆圈,(位置X+=1),颜色为白色)//导致错误且不绘制 希望我已经很好地解释了这一点,您可以看到我正在尝试做什么,编译器

所以我是XNA的新手,正在尝试以最简单的方式在屏幕上绘制多个精灵。我希望每个精灵在X轴上递增,以便在屏幕上绘制多个精灵

我定义了:

vector2pos;
LoadContent
功能中,我有:

pos=新向量2(0,0);
Draw
中,我有:

spriteBatch.Draw(圆圈、位置、颜色、白色)//将精灵绘制到屏幕的正确位置
spriteBatch.Draw(圆圈,(位置X+=1),颜色为白色)//导致错误且不绘制
希望我已经很好地解释了这一点,您可以看到我正在尝试做什么,编译器不同意
(pos.X+=50)
(我正在尝试将
X
位置增加50)。
我知道我可以用更长的方法,为每个绘图创建一个新的
Vector2
,但这将创建多行我认为肯定是不必要的代码,必须有这样一种快速的方法来进行吗?

绘图的方法签名期望第二个参数是Vector2,对吗

如果是,那么(pos.X+=1)不是矢量2。这是一条增加pos Vector2变量的X参数的语句,但该语句不返回Vector2对象的实例。

编辑:代码如下:

public void DrawSprites()
{
//在此设置圆圈
//在此设置spritebatch
//在此处设置初始位置
//在此处设置最大迭代次数
var增量_值=50;
对于(var i=0;i
您需要列出纹理的绘制矩形

//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);
    }
}
//实现Texture2D(称为“图像”)和SpriteBatch(称为“SpriteBatch”)
列表矩形=新列表();
常数int迭代=10//或者任何你想要的迭代
const int INCREMENT_值=50//再说一遍,不管你想要什么
对于(int i=0;i

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

谢谢你的回复,你建议的代码让精灵在X轴上飞过屏幕,我不希望它这样做,我希望它保持静止,分别绘制两个精灵,一个在原始坐标,然后在X轴上每一个+50像素,这样它就变成了一行重复的精灵?啊。设置FOR循环并调用spriteBatch。从该FOR循环中进行绘制。在循环的任何一次迭代中,都必须用递增的X,Y实例化一个新的向量2。有意义吗?嗯,你能写一个简单的代码示例吗?我理解这一理论,但作为初学者,将其实现为代码是另一回事!!(抱歉!)您是希望所有精灵都在对draw方法的一次调用中绘制,还是每次调用方法时都要绘制一个额外的精灵?一次调用中全部更改
pos.X+=1
pos+新矢量2(1,0)
就可以了。