XNA SpriteBatch работает в клиентском пространстве .Где «вверх» - это Y-, а не Y + (как в декартовом пространстве, проекционном пространстве и том, что большинство людей обычно выбирают для своего мирового пространства).Это заставляет вращение появляться по часовой стрелке (не против часовой стрелки, как в декартовом пространстве).Фактические координаты, производимые вращением, одинаковы.
Вращения относительны, поэтому они не «запускаются» из какой-либо указанной позиции.
Если вы используете математические функции, такие как sin
или cos
или atan2
, тогда абсолютные углы всегда начинаются с оси X + как нулевые радианы, а положительное направление вращения поворачивается к Y +.
Порядокоперации SpriteBatch
выглядят примерно так:
- Спрайт начинается как квад с левым верхним углом в (0,0), его размер совпадает с размером текстуры (или * 1019•)
- Переведите спрайт по его позиции
- Примените матрицу из
SpriteBatch.Begin
Это помещает спрайт в пространство клиента.
Наконец матрица применяетсядля каждой партии, чтобы преобразовать это пространство клиента в пространство проекции, используемоеГПУ.(Пространство проекции от (-1, -1) в левом нижнем углу окна просмотра до (1,1) в правом верхнем углу.)