![]() |
Поворот персонажа в изометрии (диметрии)
Добрый всем день. Вобшем проблема такова что я делаю игру, делаю ее в изометрии, или правильнее сказать как прочел из статьи в диметрии, т.е. у меня один блок равен по высоте половине ширины (60*30). Сделал нахождение пути, вопрос собственно в том как правльно сделать определение в какую сторону смотрит персонаж во время перемещения из одной клетки в другую? Пытаюсь делать чрез стандартное нахождение градуов, вот так:
Код AS3:
|
Попробуйте выложить флешку и исходник, может тогда понятнее будет.
|
Вложений: 1
Исходники врядли помогут там нет этого момента, кроме того что я написал выше в коде, попытки реализовать. Вот прилагаю картинку и постраюс сформулировать вопрос понятнее. Вот есть картинка, на ней синий ромб - это главный герой, красные стрелки - направление куда он может ходить, желтым и оранжевым отмечено как раз те месте которые мне нужно определять (сектора, диапозоны, не знаю как праивльно назвать). Например, как определить в каком из этих 8 секторов находится в данный момент мышь (относительно главного героя) ? И я говорю именно про направление, а не про тайлы (ромбы земли)... Вобщем во всех изометрических играх когда главный герой идет вверх - он показывается со спины, когда направо - он показывается справа, когда вниз - к нам лицом идет и так далее, вот для чего мне это нужно)...
Иначе говоря нужно определить направление персонажа, куда он движется (вверх, вниз, влево, вправо, влево-вверх, вправ-вверх, влево-вниз, вправо-вниз... известно текущее место персонажа (середина ромба персонажа) и точка середины ромба к которому он движется)... |
Мне в своё время помогла неплохая статья по линейной алгебре. Вот, возьмите. Тут ответ на ваш вопрос.
http://habrahabr.ru/post/131931/ |
спасибо.. буду рад если кто может ответить поконкретнее... я так понимаю нужно вычислить угол (что я делал в 1 посте) - но помимо этого нужно сделать поправку на изометрию, вот этого я не понимаю...
|
Нарисуйте 8 спрайтов ходьбы и на каждый диапазон задайте свой спрайт.(Если это не 3D, конечно)
Насколько я знаю, почти все изометрические игры так делают) Если вектор движения(вектор скорости+направления) > 0, то уже можно вычислить направление и показать нужный спрайт. |
Блин понятное дело что нужно делать 8 спрайтов, вопрос как раз в том чтобы определить это направление и когда из них какой показывать, прошу не нужно писать "можно уже сделать" - если вы не хотите написать конкретное решение... понятное дело что можно все сделать. Ума не хватает у меня, поэтому прошу поделиться если у кого-то есть готовое решение или ссылка на урок\решение...
|
Ну я вообще имел в виду сразу персонажа, и поворачивать его относительно его скорости, а не расположения ячеек. Но если нужно именно от ячеек, то можно провести вектор от текущей ячейки до целевой, нормализировать и если вам именно нужен угол поворота, то передавайте значения вектора в Math.atan2.
P.S. Извиняюсь, недочитал шапку до конца... |
Цитата:
|
Вложений: 1
Топик старый, но все-таки, может кому пригодится.
В поисках решения аналогичного вопроса попал на этот топик. Быстрого решения не нашел, пораскинул мозгами. Решение, в принципе, очень простое. Берем окружность, которая размером в 2 * Math.PI и делим на 16 частей, получается что-то вроде того: http://www.flasher.ru/forum/attachme...1&d=1449666259 И работаем уже с этими диапазонами. Вот кривенький класс Helper по этим делам: Код AS3:
|
Я скажу что переходу от одной системы координат в другую помогают матрицы трансформации. Это самый простой путь какой можно придумать. Преобразование пишется в три строчки.
|
| Часовой пояс GMT +4, время: 15:25. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.