Итак, хна, используется стандартный спрайтБатч. На карте есть враги, которые двигаются в 8 направлениях, вид сверху, по этому ни какой разницы в анимациях движения в разные стороны нет, кроме поворота.
Сейчас для каждого направления движения заготовлена своя анимация, что мне не очень нравится, ибо почти одно и тоже, а место занимает.
Как вариант оптимизации вижу сортировку врагов по направлению движения и отрисовку в 8 этапов (батчей), каждая отрисовка со своей матрицей преобразования. Но придётся вычислять положение текстуры с учётом поворота, что мне совсем не хочется.
Есть ли какие другие варианты решения данной проблемы?
Mog
> Но придётся вычислять положение текстуры с учётом поворота
А почему бы не вращать и выводить спрайт вокруг центра?
Тогда никакой разницы, повёрнут он или нет - координаты те же.
Я знаю, что можно применить свою матрицу преобразований для каждого батча, а вот о том чтобы повернуть отдельный спрайт я не слышал.
Или ты предлагаешь поворачивать текстуру в памяти?
http://creators.xna.com/en-US/education/catalog/?lc=1033&p=4
см примеры по ссылке и не разрушай людям мозг с поворотом текстуры в памяти! :)
ret
> не разрушай людям мозг с поворотом текстуры в памяти! :)
даже не собирался, пошёл по ссылки и НЕОЖИДАННО вспомнил, что в методе Draw(...) можно указать угол поворота, поворачивает на ура. Тесты показали что поворот вокруг левого верхнего угла. Персонаж при поворотах прыгает :) буду думать как внести поправку в положение спрайта, ибо вращать нужно вокруг центра.
To Mog:
в spriteBatch.Draw(...) есть параметр Origin.
Origin это и есть центр вращения спрайта. Например, у тебя спрайт персонажа размерами 64x64. Ставишь Origin 32x32 и персонаж вращается вокруг своей оси.
P.S.
Читай MSDN, там много интересного написано.
unnamed
Спасибо, как раз то что и надо было.
> Читай MSDN, там много интересного написано.
Регулярно такой бойдой занимаюсь.
Дело было так: сначала меня жёстко торкнуло и я напрочь забыл о том, что в методе Draw(...) есть куча интересных параметров, в том числе поворот. Зайдя на обед я про поворот вспомнил, быстро затестил пошёл работать дальше по пути выдумывая велосипед (и таки выдумал) как правильно повернуть. Так выпьем же за то чтобы вас так жёстко никогда не торколо.
Закрываю тему.
Тема в архиве.
Тема закрыта.