XNA
GameDev.ru / Сообщества / XNA / Форум / Поворот спрайта вокруг заданной точки

Поворот спрайта вокруг заданной точки

MogПостоялецwww3 авг. 201021:21#0
Итак, хна, используется стандартный спрайтБатч. На карте есть враги, которые двигаются в 8 направлениях, вид сверху, по этому ни какой разницы в анимациях движения в разные стороны нет, кроме поворота.
Сейчас для каждого направления движения заготовлена своя анимация, что мне не очень нравится, ибо почти одно и тоже, а место занимает.
Как вариант оптимизации вижу сортировку врагов по направлению движения и отрисовку в 8 этапов (батчей), каждая отрисовка со своей матрицей преобразования. Но придётся вычислять положение текстуры с учётом поворота, что мне совсем не хочется.
Есть ли какие другие варианты решения данной проблемы?
AlprogМодераторwww4 авг. 20109:11#1
Mog
> Но придётся вычислять положение текстуры с учётом поворота
А почему бы не вращать и выводить спрайт вокруг центра?
Тогда никакой разницы, повёрнут он или нет - координаты те же.
MogПостоялецwww4 авг. 201010:16#2
Я знаю, что можно применить свою матрицу преобразований для каждого батча, а вот о том чтобы повернуть отдельный спрайт я не слышал.
Или ты предлагаешь поворачивать текстуру в памяти?
retПостоялецwww4 авг. 201011:28#3
http://creators.xna.com/en-US/education/catalog/?lc=1033&p=4

см примеры по ссылке и не разрушай людям мозг с поворотом текстуры в памяти! :)

MogПостоялецwww4 авг. 201013:32#4
ret
> не разрушай людям мозг с поворотом текстуры в памяти! :)
даже не собирался, пошёл по ссылки и НЕОЖИДАННО вспомнил, что в методе Draw(...) можно указать угол поворота, поворачивает на ура. Тесты показали что поворот вокруг левого верхнего угла. Персонаж при поворотах прыгает :) буду думать как внести поправку в положение спрайта, ибо вращать нужно вокруг центра.
unnamedПостоялецwww4 авг. 201016:47#5
To Mog:
в spriteBatch.Draw(...) есть параметр Origin.
Origin это и есть центр вращения спрайта. Например, у тебя спрайт персонажа размерами 64x64. Ставишь Origin 32x32 и персонаж вращается вокруг своей оси.
P.S.
Читай MSDN, там много интересного написано.
MogПостоялецwww4 авг. 201017:48#6
unnamed
Спасибо, как раз то что и надо было.
> Читай MSDN, там много интересного написано.
Регулярно такой бойдой занимаюсь.
Дело было так: сначала меня жёстко торкнуло и я напрочь забыл о том, что в методе Draw(...) есть куча интересных параметров, в том числе поворот. Зайдя на обед я про поворот вспомнил, быстро затестил пошёл работать дальше по пути выдумывая велосипед (и таки выдумал) как правильно повернуть. Так выпьем же за то чтобы вас так жёстко никогда не торколо.
Закрываю тему.

/ Форум / XNA

Тема в архиве.

Тема закрыта.

2001—2018 © GameDev.ru — Разработка игр