关于在XNA中滚动背景的问题

时间:2011-06-01 20:57:23

标签: xna scroll textures

我正在为我的游戏滚动背景,我有点难以理解我应该如何重复纹理。到目前为止,我有它,所以背景类需要五个变量:两个浮点数(每个轴一个,夹紧到0.01和1.0),两个bool(看它是否应该在任一轴上重复)和相机。它将纹理绘制成矩形,矩形的位置随着相机的位置乘以适当的浮点数而移动。

到目前为止,移动代码只是:

source.X = (int)(camera.Pos.X * scrollX);
source.Y = (int)(camera.Pos.Y * scrollY);

所以我想做的是让它在一个或两个重复bool为真时在适当的轴(或轴)上重复纹理,但我不知道我怎么能用我的现行制度。我以为我可以添加三个或更多的矩形(我通常会让我的背景变得很大),让它们都绘制相同的纹理并根据相机的位置移动,但我不确定我该怎么做。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我没有测试过这个,但我很确定你应该能够使用同时包含源矩形和目标矩形的overload of SpriteBatch.Draw。设置目标矩形以覆盖屏幕。将源矩形设置为背景位置的否定(或类似的东西;它将超出纹理的边缘)。

您可能需要将精灵批处理的SamplerState设置为包裹的sampler states之一(例如LinearWrap)。