![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2005
Адрес: не дом и не улица
Сообщений: 1,204
|
Начал сегодня делать стратегию на флэше (тип - риал-тайм, ну вроде РедАлерта или СтарКрафта). Потихоньку продвигаюсь - но и проблемы, которые с ходу мне не решить, уже появились
Основной принцип такой - при нажатии на кнопку (например) появляется "юнит" (например soldat) из определенной точки (дверь казармы). Ну то есть обычный duplicateMovieClip ("soldat", ima1, deep) setProperty (ima, _x, ...); ... и т д. ima с каждым юнитом увеличивается на единицу, глубина тоже - ну вобщем, все как обычно. А в самом клипе (soldat) уже написан собственно код, определяющий поведение юнита - если попадает в границы рамочки - значит он "обводится" (становится активным), если обведен и нажата кнопка мыши в каом-то месте на поле - значит он отправляется туда - и т. д. и т. п. Всё это уже работает - а теперь собственно проблемы 1) Так как глубина клипов задается при их копировании - солдаты перекрывают друг друга и здания как вздумается - то есть задний юнит вполне может загораживать переднего и т. д. Как можно сделать динамическое обновление "глубины" - то есть, если клип спускается "вниз" ("приближается") - то выходит на передний план - и наоборот? 2) В принципе, даже более важное - так как решив этот вопрос можно будет будет пойти на хитрости и забить на 1-ый - как сделать "препятствия" - то есть, чтобы юниты не могли проходить друг-сквозь-друга и сквозь здания? Если бы это были статические препятствия небольшого кол-ва - например скалы - запрогить их было бы не сложно - но тут ведь может быть любое кол-во юнитов, которые постоянно движутся и должны соответственно влиять друг на друга
__________________
Давайте нанесем по ним ядерный удар! |
|
|||||
|
надо делать карту-сетку и в ней прописывать - где свободная клетка, где пустая. на основе карты генерить граф путей и по нему волновым алгоритмом искать дорогу для юнита.
|
|
|||||
|
Регистрация: Aug 2005
Адрес: не дом и не улица
Сообщений: 1,204
|
Цитата:
Цитата:
__________________
Давайте нанесем по ним ядерный удар! |
|
|||||
|
Регистрация: Aug 2005
Адрес: не дом и не улица
Сообщений: 1,204
|
Цитата:
__________________
Давайте нанесем по ним ядерный удар! |
|
|||||
|
Цитата:
сетка - это просто массив клеток, на которых условно разделено поле игры с их координатами. граф - это двухмерный массив объектов-клеток, где для каждой клетки прописаны массив возможных "выходов" из нее - соответственно, для клетки, окруженный всеми свободными клетками, этот массив будет содержать 8 выходов, если вокруг есть занятные клетки - убиваем соответствущие элементы. имея граф, мы можем вычислить путь из одной клетки в другую, обходя занятые. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
|
|
|||||
|
Регистрация: Aug 2005
Адрес: не дом и не улица
Сообщений: 1,204
|
Хм, что-то странное происходит при вставке в код мувиклипа следущего кода -
glu=y //глубина равна координате у мувика (для упрощения пока без х) this.swapDepths(glu) //данный мувик отправляется на соответствующую шлубину начинаются чудеса - после первого мувиклипа все последующие пропадают и начинает безбожно тормозить флэш. Попробовал различные вариации - либо примерно такой же, либо нет эффекта. Кто может сказать, в чем дело?
__________________
Давайте нанесем по ним ядерный удар! |
|
|||||
|
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
Написал давным-давно для схожих целей простенький прототипчик - регулирует глубину залегания клипов в зависимости от их координаты Y:
MovieClip.prototype.sortDepths = function() {
var movies = [];
for (var i in this) {
if (typeof (this[i]) == "movieclip") {
movies.push(this[i]);
}
}
//
var Sorter = function (a, b) {
if (a._y>b._y) {
return 1;
}
if (b._y>a._y) {
return -1;
}
else {
return 0;
}
};
movies.sort(Sorter);
for (var i = 0; i<=movies.length-1; i++) {
movies[i].swapDepths(i);
}
};
__________________
...Тебе страшно? Мне - нет. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|