Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Z сортировка (http://www.flasher.ru/forum/showthread.php?t=91500)

KLIFF 01.02.2007 04:11

Z сортировка
 
Вложений: 1
всем привет!
вопрос очень интересный! ответа немогу найти
интересует вот что ! как сделать сортировку глубины ячеек карты
вот код который делает карту 10х10 ячеек
Код:

game = {};
game.columns = 10;
game.rows = 10;
game.spacing = 30;
game.depth = 1000;
game.path = _root.grid;
game.numberOfTypes = 8;
function buildGrid() {
        for (var j = 1; j<=game.rows; ++j) {
                for (var i = 1; i<=game.columns; ++i) {
                        var name = "cell"+i+"_"+j;
                        var x = (i-1)*game.spacing;
                        var y = (j-1)*game.spacing;
                        var type = 1;
                        game.path.attachMovie("cell", name, ++game.depth);
                        game.path[name]._x = x;
                        game.path[name]._y = y;
                        game[name] = {x:i, y:j, name:name, type:type, clip:game.path[name]};
                }
        }
}

предположим есть некий персонаж который передвигается по ячейкам
в опр. ячейках есть некий объект. если персанаж находится на ячейке ниже чем ячейка с объектом то персонаж покрывает объект.
а если персонаж находиться над ячейкой с объектом то объект покрывает персонажа
тоесть получаеться персонаж постоянно меняет свою глубину!
есть вариант делать глубину ячейки по следующей схеме
первая ячейка будет иметь глубину = 0 втарая = 10 треться 20 и т.д.
а персонаж попадая на ячейку с глубиной = 10 будет иметь глубину =11

вопрос: как задавать глубину ячеек? и как персонажу постоянно менять глубину?

всем спасибо.

iNils 01.02.2007 05:09

Читать про swapDepths

CorC 01.02.2007 10:38

я тоже недавно такое делал, но не про персонажей :)
глубину задавал примерно так
0+d 1+d 2+d 3+d 4+d
5+d 6+d 7+d 8+d 9+d
....
d это просто некот изнач глубина
написал функцию GetDepths которая по i j находит глубину
и потом если что надо менял swapDepths

firelord 01.02.2007 16:00

я вот тоже над подобным алгоритмом работал - только у меня задача, вроде, посложнее была: во-первых - проекция изометрическая, во-вторых - объекты на карте могут иметь размер больше 1-й клетки. пока не сделал на деревьях, ничего не получалось...
в Вашем же случае. как мне представляется, все достаточно просто. глубину ячейки определяете как
Код:

(x+y*rows)*2
это - глубина "пола". соотв. глубина объекта, расположенного на "полу" равняется глубине пола+1.
когда персонаж заходит в ячейку, он получает высоту пола этой ячейки+1 - таким образом он автоматом будет над объектами, расположенными по y-1 - и под объектами на y+1
если я Вас правильно понял, конечно ;)

combo 01.02.2007 16:41

я б задал каждому row свою глубину. Т.е. например все клетки cell.._1 имеют глубину 1, клетки cell.._2 - 3, клетки cell.._3 - 5. Суть в том, чтобы человечек, поднимаясь вверх или вниз ,также менял свою глубину на 2 (либо как-то узнавал глубину клетки на которой он стоит и прибавлял к её глубине единицу).

KLIFF 01.02.2007 18:39

firelord спасибо !!! раскидал пол по твоей формуле только * на 5 =) что бы запас был побольше =)
ща делаю персанажа глубину ему буду брать от ячейки в которой он находиться +1 ... всем спасибо!


Часовой пояс GMT +4, время: 18:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.