Использование Spritebatch с различным началом вращения - PullRequest
1 голос
/ 15 апреля 2011

Я рисую игру на основе плитки. Некоторые плитки могут вращаться вокруг своего центра. Похоже, что установка начала вращения для одного вызова SpriteBatch.Draw влияет на все остальные вызовы Draw без указания источника.

Есть ли способ избежать необходимости указывать происхождение для каждого другого вызова отрисовки для невращающихся плиток?

В идеале я не хочу, чтобы мне приходилось группировать не вращающиеся плитки вместе и рисовать до / отдельно от моих вращающихся плиток.

1 Ответ

2 голосов
/ 15 апреля 2011

Похоже, что установка начала вращения для одного вызова SpriteBatch.Draw влияет на все остальные вызовы Draw без указания источника.

Это просто не тот случай.origin для Draw применяется только к этому конкретному Draw.

Если вы используете перегрузку Draw, которая не указывает источник, источник неявно используется Vector2.Zero.

Теперь, если вы фактически передаете матрицу в Begin, эта матрица будет применена к всем Draw вызовам (включая те, в которых вы задали источник) на этом конкретном спрайтеПакет до тех пор, пока не будет вызван метод End.

Вы должны использовать параметр вращения Draw, чтобы вращать отдельных спрайтов в вашем мире.Вы должны использовать параметр матрицы в Begin, чтобы переместить вид всех ваших спрайтов (например, камеры).

...