我正在为我的游戏滚动背景,我有点难以理解我应该如何重复纹理。到目前为止,我有它,所以背景类需要五个变量:两个浮点数(每个轴一个,夹紧到0.01和1.0),两个bool(看它是否应该在任一轴上重复)和相机。它将纹理绘制成矩形,矩形的位置随着相机的位置乘以适当的浮点数而移动。
到目前为止,移动代码只是:
source.X = (int)(camera.Pos.X * scrollX);
source.Y = (int)(camera.Pos.Y * scrollY);
所以我想做的是让它在一个或两个重复bool为真时在适当的轴(或轴)上重复纹理,但我不知道我怎么能用我的现行制度。我以为我可以添加三个或更多的矩形(我通常会让我的背景变得很大),让它们都绘制相同的纹理并根据相机的位置移动,但我不确定我该怎么做。有什么建议吗?
答案 0 :(得分:2)
我没有测试过这个,但我很确定你应该能够使用同时包含源矩形和目标矩形的overload of SpriteBatch.Draw
。设置目标矩形以覆盖屏幕。将源矩形设置为背景位置的否定(或类似的东西;它将超出纹理的边缘)。
您可能需要将精灵批处理的SamplerState
设置为包裹的sampler states之一(例如LinearWrap
)。