![]() |
делаю стратегию - пара вопросов
Начал сегодня делать стратегию на флэше (тип - риал-тайм, ну вроде РедАлерта или СтарКрафта). Потихоньку продвигаюсь - но и проблемы, которые с ходу мне не решить, уже появились
Основной принцип такой - при нажатии на кнопку (например) появляется "юнит" (например soldat) из определенной точки (дверь казармы). Ну то есть обычный duplicateMovieClip ("soldat", ima1, deep) setProperty (ima, _x, ...); ... и т д. ima с каждым юнитом увеличивается на единицу, глубина тоже - ну вобщем, все как обычно. А в самом клипе (soldat) уже написан собственно код, определяющий поведение юнита - если попадает в границы рамочки - значит он "обводится" (становится активным), если обведен и нажата кнопка мыши в каом-то месте на поле - значит он отправляется туда - и т. д. и т. п. Всё это уже работает - а теперь собственно проблемы 1) Так как глубина клипов задается при их копировании - солдаты перекрывают друг друга и здания как вздумается - то есть задний юнит вполне может загораживать переднего и т. д. Как можно сделать динамическое обновление "глубины" - то есть, если клип спускается "вниз" ("приближается") - то выходит на передний план - и наоборот? 2) В принципе, даже более важное - так как решив этот вопрос можно будет будет пойти на хитрости и забить на 1-ый - как сделать "препятствия" - то есть, чтобы юниты не могли проходить друг-сквозь-друга и сквозь здания? Если бы это были статические препятствия небольшого кол-ва - например скалы - запрогить их было бы не сложно - но тут ведь может быть любое кол-во юнитов, которые постоянно движутся и должны соответственно влиять друг на друга |
надо делать карту-сетку и в ней прописывать - где свободная клетка, где пустая. на основе карты генерить граф путей и по нему волновым алгоритмом искать дорогу для юнита.
|
По первому вопросу.
Игра в изометрии? Тогда делай глубину по координатам, а не последовательности появления на карте. глубина = _y * максимальное значение поля по x + _x |
Цитата:
Цитата:
|
но координаты то у них разные?
|
Цитата:
|
Цитата:
сетка - это просто массив клеток, на которых условно разделено поле игры с их координатами. граф - это двухмерный массив объектов-клеток, где для каждой клетки прописаны массив возможных "выходов" из нее - соответственно, для клетки, окруженный всеми свободными клетками, этот массив будет содержать 8 выходов, если вокруг есть занятные клетки - убиваем соответствущие элементы. имея граф, мы можем вычислить путь из одной клетки в другую, обходя занятые. |
Цитата:
|
Хм, что-то странное происходит при вставке в код мувиклипа следущего кода -
glu=y //глубина равна координате у мувика (для упрощения пока без х) this.swapDepths(glu) //данный мувик отправляется на соответствующую шлубину начинаются чудеса - после первого мувиклипа все последующие пропадают и начинает безбожно тормозить флэш. Попробовал различные вариации - либо примерно такой же, либо нет эффекта. Кто может сказать, в чем дело? |
Написал давным-давно для схожих целей простенький прототипчик - регулирует глубину залегания клипов в зависимости от их координаты Y:
Код:
MovieClip.prototype.sortDepths = function() { |
| Часовой пояс GMT +4, время: 09:54. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.