XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > StarCraft (только чтение)> Галактическая академия
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
Epselot

offline
Опыт: 3,592
Активность:
Перемещение области
Столкнулся с недоработкой перемещения области, долго экспериментировавший я пришёл к выводу, что в один момент времени можно переместить области только в 1 место. То есть допустим на 10 секунде не получится переместить 2 области в 2 разных места, либо одну область в начале в первое место сделать действие а потом во второе.
Это мне нужно для того, чтобы каждые 10 секунд каждый юнит проверял наличие других единиц во круг него и относительно этого выполнял действие. Пробовал сделать несколько областей и каждому юниту присваивается своя сменная область, но результата это не дало... Все единицы движутся в 1 точку...
Что можете посоветовать, может можно обойтись без областей, но тогда как? Мне нужно расстояние единиц до юнита в определённом диапазоне и до некоторых точек.
Старый 31.05.2012, 11:31
Bornikkeny
Silenced by Bornikkeny
offline
Опыт: 24,410
Активность:
Ну я пробовал перемещать область. С помошью переодического события. Но это вызвало ужастные лаги.
Старый 31.05.2012, 11:34
inoto
я буду крутым!
offline
Опыт: 6,891
Активность:
Хз, мб я не правильно понял, но в любом случае область это точки. Круговая - точка с радиусом.
Epselot:
Мне нужно расстояние единиц до юнита в определённом диапазоне и до некоторых точек.
Перефразируй, приведи более конкретный пример, если сможешь.
Старый 31.05.2012, 11:37
Epselot

offline
Опыт: 3,592
Активность:
Стоит юнит, рядом с ним 3 одинаковых здания, он должен подбежать к ближайшему относительно его и точки Х.
Причём таких юнитов много, и действия могут совершаться в один момент времени.
Миниатюры
Кликните на картинку для увеличения
Название:  Безымянный.png
Просмотров: 20
Размер:  2.1 Кбайт  
Старый 31.05.2012, 12:18
Bornikkeny
Silenced by Bornikkeny
offline
Опыт: 24,410
Активность:
Epselot, лучше с областями не мудрить, они такие лаги вызывают.....
Старый 31.05.2012, 12:22
inoto
я буду крутым!
offline
Опыт: 6,891
Активность:
Epselot, Области должны быть статичными, они тебе не нужны. Юнит же двигается. А область это точка с радиусом. Юнит будет этой точкой, радиус бери какой тебе нужен. Циклом проходись по каждому Зданию. Если рядом со Зданием есть ещё одно здание то проверяем его на Цель и тп.
Можно это конечно закодить как-то попроще, но я подзабыл уже девелоперство, увы.
Я бы закодил этот кусок с отдельную функцию, с локальными переменными и тп.
inoto добавил:
Можно идит наоборот - от Цели к Юниту, но быстродействие от этого, вроде как, не меняется.
Почитай про Сишные списки и перечисления, там много нюансов :)
Старый 31.05.2012, 12:48
Харгард
Epic
offline
Опыт: 7,829
Активность:
Вместо областей можно использовать абилку.
Которая будет искать вокруг юнита здания и отмечать их или вешать на них баф.
А уже тригером отправлять юнита к зданию с бафом.
Старый 31.05.2012, 12:52
Epselot

offline
Опыт: 3,592
Активность:
inoto, ты предлагаешь перебирать все юниты на карте со всеми??? это на раз компьютер убьет с моими объёмами, у меня на карте будет уж точно более 100 юнитов (это мин), и проверить каждый с каждым это уже 10000.... ?
Epselot добавил:
GraTuraL, не получится, у меня же много юнитов и много зданий, очень много=)
У меня то с 1 юнитом всё отлично робит, а вот когда их становится много и одновременно тут то всё и идёт нах...
Старый 31.05.2012, 12:57
inoto
я буду крутым!
offline
Опыт: 6,891
Активность:
Epselot, Тогда тебе нужен другой подход, не мой.
Терпение, ща скоро сюда заглянут девелоперы и предложат что-нибудь путное :)
Старый 31.05.2012, 13:06
Тонг

offline
Опыт: 15,315
Активность:
  1. Баф вешается зданием на здание
  2. юнит идет к ближайшему зданию на котором наибольшее количество бафов от других зданий
  3. при подходе к зданию на здание с юнита вешается антибаф на короткое время убивающий бафы на здании
  4. см. п. 2
  5. ...профит!...
Мимо проходил.
Старый 31.05.2012, 13:34
Epselot

offline
Опыт: 3,592
Активность:
Тонг, мне нужно не просто к ближайшему зданию, а к одному из соседних зданий с учётом, что одно из них ближе других к некоторой отдалёно точке точке... и из зданий этих у меня целая полоса, и нужно чтоб юниты последовательно по ней двигались. Смотри рисунок.
Старый 31.05.2012, 13:39
Zolden

offline
Опыт: 1,588
Активность:
Epselot, я правильно понимаю, что тебе нужно, чтоб юнит выбирал в некотором радиусе от себя все здания, смотрел, которое из них ближе к удалённой точке, и шёл бы к этому зданию, а достигнув его, повторял бы операцию?
Старый 31.05.2012, 13:50
Epselot

offline
Опыт: 3,592
Активность:
Zolden, да=)))
Старый 31.05.2012, 13:54
Zolden

offline
Опыт: 1,588
Активность:
В таком случае, мне видится следующее решение:
Намерение юнита пойти к очередному зданию можно выразить в виде dummy effect-instant способности. Будет триггер, включаемый этой способностью, который выберет группу зданий вокруг юнита в желаемом радиусе, и для каждого здания померяет расстояние до удалённой точки. И отдаст приказ юниту пойти к тому зданию, что к точке ближе. Когда юнит подойдёт к зданию, снова запустится dummy эффект.
Старый 31.05.2012, 14:09
Epselot

offline
Опыт: 3,592
Активность:
Zolden:
который выберет группу зданий вокруг юнита
а вот это делается путём помещения на юнит области, а вот когда нужно поместить сразу несколько областей или поочерёдно одну, вот тут то и возникает ппц... или ты знаешь другой способ?
Старый 31.05.2012, 14:16
Zolden

offline
Опыт: 1,588
Активность:
Помещать на юнит область не надо. Есть функции, создающие временные области в указываемой тобой точке и с указываемым радиусом.
Добавляешь действие:
Выбор единиц->Выбрать все единицы в группе.
Дальше кликаешь на группу (там по умолчанию стоит "последние созданные единицы") и выбираешь "единицы в области, соответствующие условию".
И задаёшь область и фильтры единицы. Или даже можно тип единицы указать.
Старый 31.05.2012, 14:26
inoto
я буду крутым!
offline
Опыт: 6,891
Активность:
Epselot, А если известны координаты Цели, то можно послать Юнит сразу туда. Когда в процессе перехода встречается Здание, то двигать к нему.
Старый 31.05.2012, 14:39
Epselot

offline
Опыт: 3,592
Активность:
Zolden, лол я так всё и делаю, обычно я область крепил к юниту и вставлял её в этот поиск, а вот щас нашёл что можно не создавать область, а поставить радиус вокруг юнита, щас протестирую=)
Старый 31.05.2012, 14:47
Epselot

offline
Опыт: 3,592
Активность:
Два часа бился, не знаю почему но вот теперь всё норм заработало =) ключь в том чтоб не делать область=)
Старый 31.05.2012, 19:26
Epselot

offline
Опыт: 3,592
Активность:
Решил сделать фиксированный маршрут, поскольку в некоторых ситуациях происходят немного нелогичные вещи...
Старый 01.06.2012, 14:24

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:21.