Epselot
offline
Опыт:
3,592Активность: |
Перемещение области
Столкнулся с недоработкой перемещения области, долго экспериментировавший я пришёл к выводу, что в один момент времени можно переместить области только в 1 место. То есть допустим на 10 секунде не получится переместить 2 области в 2 разных места, либо одну область в начале в первое место сделать действие а потом во второе. Это мне нужно для того, чтобы каждые 10 секунд каждый юнит проверял наличие других единиц во круг него и относительно этого выполнял действие. Пробовал сделать несколько областей и каждому юниту присваивается своя сменная область, но результата это не дало... Все единицы движутся в 1 точку... Что можете посоветовать, может можно обойтись без областей, но тогда как? Мне нужно расстояние единиц до юнита в определённом диапазоне и до некоторых точек. |
31.05.2012, 11:31 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Bornikkeny
Silenced by Bornikkeny
offline
Опыт:
24,410Активность: |
Ну я пробовал перемещать область. С помошью переодического события. Но это вызвало ужастные лаги. |
31.05.2012, 11:34 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
inoto
я буду крутым!
offline
Опыт:
6,891Активность: |
Хз, мб я не правильно понял, но в любом случае область это точки. Круговая - точка с радиусом.
Epselot:
Перефразируй, приведи более конкретный пример, если сможешь. |
31.05.2012, 11:37 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Стоит юнит, рядом с ним 3 одинаковых здания, он должен подбежать к ближайшему относительно его и точки Х. Причём таких юнитов много, и действия могут совершаться в один момент времени. |
31.05.2012, 12:18 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Bornikkeny
Silenced by Bornikkeny
offline
Опыт:
24,410Активность: |
Epselot, лучше с областями не мудрить, они такие лаги вызывают..... |
31.05.2012, 12:22 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
inoto
я буду крутым!
offline
Опыт:
6,891Активность: |
Epselot, Области должны быть статичными, они тебе не нужны. Юнит же двигается. А область это точка с радиусом. Юнит будет этой точкой, радиус бери какой тебе нужен. Циклом проходись по каждому Зданию. Если рядом со Зданием есть ещё одно здание то проверяем его на Цель и тп.
Можно это конечно закодить как-то попроще, но я подзабыл уже девелоперство, увы.
Я бы закодил этот кусок с отдельную функцию, с локальными переменными и тп.
inoto добавил:
Можно идит наоборот - от Цели к Юниту, но быстродействие от этого, вроде как, не меняется. Почитай про Сишные списки и перечисления, там много нюансов :) |
31.05.2012, 12:48 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Харгард
Epic
offline
Опыт:
7,829Активность: |
Вместо областей можно использовать абилку. Которая будет искать вокруг юнита здания и отмечать их или вешать на них баф. А уже тригером отправлять юнита к зданию с бафом. |
31.05.2012, 12:52 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
inoto, ты предлагаешь перебирать все юниты на карте со всеми??? это на раз компьютер убьет с моими объёмами, у меня на карте будет уж точно более 100 юнитов (это мин), и проверить каждый с каждым это уже 10000.... ?
Epselot добавил: GraTuraL, не получится, у меня же много юнитов и много зданий, очень много=) У меня то с 1 юнитом всё отлично робит, а вот когда их становится много и одновременно тут то всё и идёт нах... |
31.05.2012, 12:57 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
inoto
я буду крутым!
offline
Опыт:
6,891Активность: |
Epselot, Тогда тебе нужен другой подход, не мой.
Терпение, ща скоро сюда заглянут девелоперы и предложат что-нибудь путное :) |
31.05.2012, 13:06 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Тонг
offline
Опыт:
13,665Активность: |
Мимо проходил. |
31.05.2012, 13:34 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Тонг, мне нужно не просто к ближайшему зданию, а к одному из соседних зданий с учётом, что одно из них ближе других к некоторой отдалёно точке точке... и из зданий этих у меня целая полоса, и нужно чтоб юниты последовательно по ней двигались. Смотри рисунок. |
31.05.2012, 13:39 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Zolden
offline
Опыт:
1,588Активность: |
Epselot, я правильно понимаю, что тебе нужно, чтоб юнит выбирал в некотором радиусе от себя все здания, смотрел, которое из них ближе к удалённой точке, и шёл бы к этому зданию, а достигнув его, повторял бы операцию? |
31.05.2012, 13:50 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Zolden, да=))) |
31.05.2012, 13:54 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Zolden
offline
Опыт:
1,588Активность: |
В таком случае, мне видится следующее решение:
Намерение юнита пойти к очередному зданию можно выразить в виде dummy effect-instant способности. Будет триггер, включаемый этой способностью, который выберет группу зданий вокруг юнита в желаемом радиусе, и для каждого здания померяет расстояние до удалённой точки. И отдаст приказ юниту пойти к тому зданию, что к точке ближе. Когда юнит подойдёт к зданию, снова запустится dummy эффект. |
31.05.2012, 14:09 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Zolden:
а вот это делается путём помещения на юнит области, а вот когда нужно поместить сразу несколько областей или поочерёдно одну, вот тут то и возникает ппц... или ты знаешь другой способ? |
31.05.2012, 14:16 | #15
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Zolden
offline
Опыт:
1,588Активность: |
Помещать на юнит область не надо. Есть функции, создающие временные области в указываемой тобой точке и с указываемым радиусом.
Добавляешь действие:
Выбор единиц->Выбрать все единицы в группе.
Дальше кликаешь на группу (там по умолчанию стоит "последние созданные единицы") и выбираешь "единицы в области, соответствующие условию".
И задаёшь область и фильтры единицы. Или даже можно тип единицы указать. |
31.05.2012, 14:26 | #16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
inoto
я буду крутым!
offline
Опыт:
6,891Активность: |
Epselot, А если известны координаты Цели, то можно послать Юнит сразу туда. Когда в процессе перехода встречается Здание, то двигать к нему. |
31.05.2012, 14:39 | #17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Zolden, лол я так всё и делаю, обычно я область крепил к юниту и вставлял её в этот поиск, а вот щас нашёл что можно не создавать область, а поставить радиус вокруг юнита, щас протестирую=) |
31.05.2012, 14:47 | #18
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Два часа бился, не знаю почему но вот теперь всё норм заработало =) ключь в том чтоб не делать область=) |
31.05.2012, 19:26 | #19
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Epselot
offline
Опыт:
3,592Активность: |
Решил сделать фиксированный маршрут, поскольку в некоторых ситуациях происходят немного нелогичные вещи... |
01.06.2012, 14:24 | #20
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|