Вопрос по прокрутке фонов в XNA - PullRequest
0 голосов
/ 02 июня 2011

Я работаю над прокруткой фонов для своей игры, и я немного озадачен тем, как мне повторить текстуру.До сих пор у меня было так, что класс фона принимает пять переменных: два числа с плавающей запятой (по одному для каждой оси, оба зафиксированы на 0,01 и 1,0), два значения типа bool (чтобы увидеть, должно ли оно повторяться на любой оси) и камера.Он рисует текстуру в прямоугольник, и позиция прямоугольника перемещается с положением камеры, умноженным на соответствующее число с плавающей точкой.

Код движения до сих пор просто:

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

Так что я быЯ хотел бы сделать так, чтобы текстура повторялась на соответствующей оси (или осях), когда один или оба из повторяющихся bools верны, но я понятия не имею, как я могу сделать это с моей текущей системой.Я думал, что смогу добавить три или более прямоугольника (я обычно делаю свои фоны довольно большими), чтобы они все рисовали одну и ту же текстуру и перемещались в зависимости от того, где находится камера, но я не совсем уверен, как я мог это сделать.Есть предложения?

1 Ответ

2 голосов
/ 02 июня 2011

Я не проверял это, но я уверен, что вы сможете использовать перегрузку SpriteBatch.Draw, которая принимает как исходный, так и целевой прямоугольник.Установите целевой прямоугольник, чтобы покрыть ваш экран.Установите исходный прямоугольник на отрицание положения фона (или что-то в этом роде; он выйдет за пределы вашей текстуры).

Возможно, вам придется установить SamplerState для пакета спрайтов равным единице состояний сэмплера , которые переносятся (например, LinearWrap).

...