![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Делаю игру в изометрии, есть проблема с перемещением объектов по слоям( чем больше object.y тем выше лежит объект). Есть вопрос, каким способом лучше всего это проверять, что бы не грузить систему (на сцене одновременно будет до 20 объектов (типовых 6). Есть ли в сети похожие решения? Как бы вы решили данную проблему?
P.S есть идея вешать на каждый объект listener и проверять его на hitTest, но у меня сразу возникает вопрос, как проверять один объект на столкновение со всеми. hitTest ведь проверяет только на столкновение 2-х объектов object1.hitTestObject(object2). Если пихать все объекты в массив и потом проверять методом перебора, не будет ли это слишком громоздко. |
|
|||||
|
[+1 25.07.08]
|
можно поделить игровое поле сеткой и проверять на столкновение только объекты находящиеся в соседних клетках или в одной клетке сетки.
|
|
|||||
|
а как определять в какой клетке мы находимся (похоже еще больше перебора будет, сначала на определение клетки, потом на объекты в этой клетке)? как происходит разграничение сцены на поля?
|
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
на enterFrame вешаем
function arrange():void {
items.sortOn("depth",Array.NUMERIC);
var i:int = items.length;
while(i--){
if (getChildAt(i) != items[i]) {
setChildIndex(items[i], i);
}
}
}
немного подглючивает, когда случаются два объекта с одинаковой глубиной, но что-то лучше придумать генератор depth у меня не получилось. можете поискать в Интренете по flash isometry depth sort вот, например,сразу выдал вариант http://jwopitz.wordpress.com/2008/09...depth-sorting/
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
|
Можно немного поподробнее? выложи если не жалко свой рабочий вариант, разберусь.
Последний раз редактировалось zinchencko; 16.10.2008 в 22:21. |
|
|||||
|
[+1 14.08.08]
[+1 20.08.08] |
да items - массив с объектами. isoX, isoY, isoZ - их координаты в изометрической системе. depth - их грубина.
оси координат у меня так: ![]() При каждом перемещении каждого из объектов пересчитываем depth. При входе в кадр в зависимости от depth сортируем глубину. Это не самый оптимальный способ без сомнения.
__________________
~ Never trouble trouble till trouble troubles you! |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|