Вы можете использовать параметр SourceRectangle в методе рисования . Чтобы определить, какую часть текстуры вы хотите отобразить. Допустим, у вас есть текстура 128x128. Если вы поставите Rect(0, 0, 128, 128)
, вы скажете методу рисования использовать всю текстуру, то же самое, если вы передадите null
методу рисования. Если вы поставите Rect(0, 0, 64, 64)
, вы будете использовать верхнюю левую часть текстуры. Ваш спрайт будет отображать эту часть, независимо от того, насколько велик сам спрайт. Поэтому, если ваш спрайт нарисован размером 128x128, текстурная часть 64x64 будет масштабирована.
Теперь вы можете использовать это для анимации. Если вы сохраняете в своей текстуре последовательность анимации, например this , вам просто нужно пересчитывать исходный прямоугольник каждый раз, когда вы хотите отобразить следующее изображение в вашей последовательности.
Кроме того, вы можете передать большее значение, чем ваша исходная текстура. Теперь XNA нужно обернуть или зажать вашу текстуру. Таким образом, вы можете достичь простого тайлинга. Если вам нужно больше, я думаю, вам нужно использовать ручной подход, например, циклы foreach.
Обратите внимание, что Wrap поддерживается только если вы используете мощность двух текстур.