ExArt
offline
Опыт:
13,634Активность: |
agentex SetUnitPosition проверяет не только границу карты, а pathing map. Это все юниты по пути, декорации, разница в клифах, вода. И проверяет она незвисимо от того есть у юнита Aloc или нет + ещё отменяет приказ у юнита. SetUnitX SetUnitY не проверяют все эти вещи, а тупо двигают юнита что снаряду и надо. И если он улетит за границу карты ничего не произойдёт.
Под созданием я имел в виду не выполнение триггера, а написание триггера. |
09.01.2009, 12:44 | #21
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
ну да, кроме фатала ничего конешно |
09.01.2009, 12:46 | #22
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Цитата:
А вот с этим сделай пример плиз. |
|
09.01.2009, 12:48 | #23
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
короче скоро выложу тут свой проект, там все на SetUnitPosition, и убедитесь что лагать ниче не будет даже при одновременной работе 20 таймеров |
09.01.2009, 12:48 | #24
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
ExArt если юнита выдвинуть через граниу карты SetUnitX/Y вар фаталит
|
09.01.2009, 12:51 | #25
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
agentex Рад за тебя) Я просто хотел тебе сказать что SetUnitX/Y совсем не глючные функции, а очень даже хорошие + некоторые вещи без них сделать просто нельзя.
ExArt добавил: J Я специально попробывал прежде чем писать что это не так. Сделайте пример с фаталом мне, мож я чёт не так делаю... ExArt добавил: Хех, я добился зависания. Но юнит далеко улетел, думаю где то на 5 - 10 тысяч рейнджа. Да и тригер с событием Юнит - покинул Playаble map arena решает проблему. |
09.01.2009, 13:01 | #26
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragon Knight
Меткий стрелок!!!
offline
Опыт:
4,138Активность: |
Код:
засунь это в КС и вызови из какого нибудь трига, передав ссыль на юнита и увидишь эффект |
09.01.2009, 14:41 | #27
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Dragon Knight Не буду такой бред проверять) Движение надо делать переодическим триггером, а не циклом)
|
09.01.2009, 14:58 | #28
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragon Knight
Меткий стрелок!!!
offline
Опыт:
4,138Активность: |
ExArt какая разница? эффект один и тот же при ливе с помощью этих функций юнита с карты
|
09.01.2009, 15:52 | #29
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Dragon Knight Надо написать 1 мегасложный тригер и небудет никаких проблем с ливом юнитов с карты.
Event - A unit leaves (Playable map area) Action - Remove (triggering unit) from the game. |
09.01.2009, 15:56 | #30
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragon Knight
Меткий стрелок!!!
offline
Опыт:
4,138Активность: |
Мона просто контроллировать переход юнита через функции SetUnitX, SetUnitY, чтоб тот не уехал за карту
Dragon Knight добавил: Код:
Функция требует ссылки на юнита, будущие его координаты X, Y, возвращает правду, если будущие координаты не заходят за границы игровой территории |
09.01.2009, 16:54 | #31
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pray_AD
stay in c++
offline
Опыт:
7,145Активность: |
Цитата:
Это кто тебе это сказал? Почему это 2 функции медленее чем любая одна? Например: SetUnitPosition(u,x,y); делает как минимум ...Unit.x:=x; ...Unit.y:=y; и + еще проверяет можно ли туда переместить юнита, иначе ищед свободное место рядом и помещает юнита туда. считаем: исполняется 2 команты, что очень быстро + 1 проверка, что достаточно медленно. SetUtitX(u,x) SetUnit(u,y) работают даже вместе быстрее, т.к. каждая толко присваивает ...Unit.x или ...Unit.y соответственно значение, аргумента х(у). Да и если это не убедило, то вот еще пример, когда 1 команда медленнее 2х, хоть по сути из них и состоит. Pascal: x:=256; присвоить х'у значение 256 Asm: mov ah,ffh mov x,ah; то, же самое. Все зависит от состава функции, количества локальных перепенных, количества параметров. Так что не надо так не обоснованно обвинять функции в глючности и тормознутости. |
|
09.01.2009, 17:31 | #32
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
Pray_AD м я просто говорю о своем горьком опыте при работе с ними, причем тут ваще асемблер?
|
09.01.2009, 18:02 | #33
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Pray_AD
stay in c++
offline
Опыт:
7,145Активность: |
Это пример, в котором 2 функции быстрее 1-ой =)
Pray_AD добавил: Ну т.е. 2 команды.. |
09.01.2009, 18:27 | #34
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Dragon Knight тебе не кажется что контролить при каждой итерации переодического триггера снаряд это медленное решение? и гораздо проще одним триггером решить проблему.
|
09.01.2009, 18:59 | #35
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragon Knight
Меткий стрелок!!!
offline
Опыт:
4,138Активность: |
ExArt чё ты какой упёртый? там не так уш и медленно, в функции SetUnitPosition - используется SetUnitX, SetUnitY, проверка на наличие юнитов, декораций, пафинга, не уехалли юнит за грани карты - этого достаточно, чтоб не использовать её для перемещения снарядов
Используя эту функцию для снарядов, надо: занести ссылку на дамми в переменную, контроллировать пафинг этого юнита - и ты говоришь, что моя функция тормознее SetUnitPosition? Её нужно вызвать столько раз скока надо, не надо контроллировать пафинг дамми, не надо беспокоится, что тот улетит за пределы карты Dragon Knight добавил: ExArt если ты конечно собираешься использовать таймер с периодом 0.001, то беги к близзардцам и спрашивай, что можно использовать для такого периода! |
09.01.2009, 19:27 | #36
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Dragon Knight я говорю что проверять при каждой итерации это " if x > GetRectMinX(mr) + 100 and x < GetRectMaxX(mr) - 100 and y > GetRectMinY(mr) + 100 and y < GetRectMaxY(mr) - 100 then" совсем не нужно. Достаточно написать триггер
Event - A unit leaves (Playable map area) Action - Remove (triggering unit) from the game. |
09.01.2009, 19:33 | #37
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Dragon Knight
Меткий стрелок!!!
offline
Опыт:
4,138Активность: |
ExArt вот тебе пример
там первым делом посмотри SetUnitX, SetUnitY, потом отключи их и включи SetUnitPosition... Результат оправдает мою точку зрения Dragon Knight добавил: ExArt и зачем удалять, если можно предотвратить покидание региона? Dragon Knight добавил: И если не лень проверь мою функцию, она докажет, что ничуть не затормаживает поток вара Dragon Knight добавил: Да и хватит жассера переубеждать что он не прав |
09.01.2009, 19:47 | #38
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ExArt
offline
Опыт:
13,634Активность: |
Цитата:
Даже качать не собираюсь, т.к. я и сам знаю что SetUnitx/y быстрее, другого я нигде и не утверждал. Цитата:
Во-первых затем что это снаряд. Во-вторых выстрее будет работать триггер без лишних проверок. Цитата:
больше спорить не буду, слишком сильный аргумент) |
|||
09.01.2009, 20:00 | #39
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
ExArt триггером на выход из реиона безуслоно оптимальнее определять вышел ли снаряд за границы карты или нет, чем каждый раз проверять это при движении, но тригер не связан с этим юнитом, например ты двигаеш таймером юнита, он перешел граниуц, триггер сработал, юнит удалился или подобное, а таймеру откуда об этом знать? он продолжить двигать юнита, а если бы проверка была прямо в таймере то под ифом можно было бы четко указать, мол, останови таймер и приведи в порядок все переменые с ним связаные и пр.
однако если у тебя снаряд отдельной структурой то это проще, можно делать через триггер как ты говорил, атачя на юнита структуру к которой он принадлежит, и если он выходит за пределы карты, триггер срабатывает и можно выполнять спецальный метод структуры останавливающий таймер и все прочее... |
09.01.2009, 20:24 | #40
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|