![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2003
Сообщений: 263
|
Люди, подскажите пожалуйста!
Есть карта квеста в аксонометрии 10*10 расположенная "углом"(в прямоугольной изомерии) Надо, чтобы положение персонажа каждый раз было случайное. В стандартной топ-даун проекции это выглядело бы так (при ширине и высоте 55 одной клетки): chelx = Math.round(Math.random()*9); chely = Math.round(Math.random()*9); _root.pers._x=(55*chelx)+27,5; _root.pers._y=(55*chely)+27,5; Но как быть в изомерии, какой наиболее простой вариант? Есть зверские варианты вроде для каждого положения определить if(chelx==0 && chely==0){ ... } Но тогда получится 100 вариантов, а мне еще таким же образом надо разместить 13 обьектов на этой карте!!! Да ещё чтоб они не накладывались...Плиз, хелп!!! ![]() |
|
|||||
|
Регистрация: Jun 2003
Сообщений: 263
|
Zы
[+ 1.4 20.08.2005] что это значит? |
|
|||||
|
Регистрация: Jan 2004
Адрес: нигде - не осталось на Земле свободных земель(
Сообщений: 1,176
|
Цитата:
ЗЫ а на вопрос твой ничего ответить увы не могу - слишком много словей умных (гы-гы) |
|
|||||
|
Регистрация: Jun 2003
Сообщений: 263
|
я вроде законнопослушный...))
|
|
|||||
|
Регистрация: Jun 2003
Сообщений: 263
|
вот картина:
http://www.artlogic.nm.ru/kvestttt.jpg |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
this.move = function (xp, yp) {
var x = xp * w / 2 + yp * w / 2;
var y = xp * h / 2 - yp * h / 2;
return {x:x, y:y};
};
_root.createEmptyMovieClip ("mcLib", 10000000);
mcLib.lineStyle (0, 0x000000);
mcLib.beginFill (0x999999);
mcLib.lineTo (-20, -10);
mcLib.lineTo (0, -20);
mcLib.lineTo (20, -10);
mcLib.lineTo (0, 0);
mcLib.endFill ();
xi = 300;
yi = 100;
w = 40;
h = 20;
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
var obj = this.move (i, j);
mcLib.duplicateMovieClip ("mc" + i * 10 + j, i * 10 + j + 1, {_x:xi + obj.x, _y:yi + obj.y, _alpha:20});
}
}
this.onEnterFrame = function () {
xr = Math.floor (Math.random () * 10);
yr = Math.floor (Math.random () * 10);
var obj = this.move (xr, yr);
mcLib._x = xi + obj.x;
mcLib._y = yi + obj.y;
};
|
|
|||||
|
Регистрация: Jun 2003
Сообщений: 263
|
i'll try...
А вообще обьясни плиз))) |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Фактически тебя интересует только эта функция, все остальное это демонстраниция применения.
this.move = function (xp, yp) {
var x = xp * w / 2 + yp * w / 2;
var y = xp * h / 2 - yp * h / 2;
return {x:x, y:y};
};
отсечет идет от самой левой клетки, xp=0 yp=0 клетка правее и ниже это xp=1 yp=0 значит самая нижняя клетка это xp = максимум yp=0 |
|
|||||
|
Регистрация: Jun 2003
Сообщений: 263
|
я тут надумал кое что...
как оптимально сравнить переменные на наименьшее значение? |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|