![]() |
Изометрия, перемещение объектов по слоям
Делаю игру в изометрии, есть проблема с перемещением объектов по слоям( чем больше object.y тем выше лежит объект). Есть вопрос, каким способом лучше всего это проверять, что бы не грузить систему (на сцене одновременно будет до 20 объектов (типовых 6). Есть ли в сети похожие решения? Как бы вы решили данную проблему?
P.S есть идея вешать на каждый объект listener и проверять его на hitTest, но у меня сразу возникает вопрос, как проверять один объект на столкновение со всеми. hitTest ведь проверяет только на столкновение 2-х объектов object1.hitTestObject(object2). Если пихать все объекты в массив и потом проверять методом перебора, не будет ли это слишком громоздко. |
можно поделить игровое поле сеткой и проверять на столкновение только объекты находящиеся в соседних клетках или в одной клетке сетки.
|
а как определять в какой клетке мы находимся (похоже еще больше перебора будет, сначала на определение клетки, потом на объекты в этой клетке)? как происходит разграничение сцены на поля?
|
на enterFrame вешаем
Код:
function arrange():void { немного подглючивает, когда случаются два объекта с одинаковой глубиной, но что-то лучше придумать генератор depth у меня не получилось. можете поискать в Интренете по flash isometry depth sort вот, например,сразу выдал вариант http://jwopitz.wordpress.com/2008/09...depth-sorting/ |
Можно немного поподробнее? выложи если не жалко свой рабочий вариант, разберусь.
|
да items - массив с объектами. isoX, isoY, isoZ - их координаты в изометрической системе. depth - их грубина.
оси координат у меня так: http://www.crimea.com/~chas/coordinates.png При каждом перемещении каждого из объектов пересчитываем depth. При входе в кадр в зависимости от depth сортируем глубину. Это не самый оптимальный способ без сомнения. |
| Часовой пояс GMT +4, время: 00:01. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.