Как отследить момент, что юнит добрался до указанной точки?
Итак, господа, вопрос таков.
Делаю в своём моде вышки, полезность которой зависит от юнита, которого вы в неё посадите.
Суть вопроса такова - создаём локальные переменные на юнитов, заносим их в хештаблицу, но как в следующем триггере отследить, что именно вон тот юнит, на которого был направлен закл, подошёл к кастующей вышке, а не просто мимо пробегал, или вообще к другой вышке шел?
Юнит при достижении вышки исчезает, а сама она меняется на другую вышку. Вытащить юнита обратно низзя.
В чем же проблема, спросите вы, доставай из хеш-таблицы и не парь нам мозг! Но тут-то и кроется главная загвоздка - что я не могу юзать локальные переменные в событии

Лучший ответ:
orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...



Просмотров: 175

Sergey105 #1 - 2 недели назад (отредактировано ) 0
заставь юнита двигаться к вышке и начинай отслеживать дистанцию между вышкой и юнитом и если дистанция меньше требуемого то делаешь нужные действия
чтобы узнать дистанцию
x = GetUnitX(вышка) - GetUnitX(юнит)
y = GetUnitY(вышка) - GetUnitY(юнит)
dist = SquareRoot(x*x + y*y);
dist товя дистанция между вышкой и юнитом
и да тебе работать с таймером
DemonoiD #2 - 2 недели назад 0
Почему не отследить по погрузке в транспорт или жертвоприношению?
Sergey105 #3 - 2 недели назад 0
DemonoiD, ну я предложил как вариант
orc01 #4 - 2 недели назад 0
DemonoiD:
Почему не отследить по погрузке в транспорт или жертвоприношению?
Так ведь у нас нет погрузки в транспорт. Юнит после этого из игры удаляется. Через жертву я хрен знает как, ибо кода самой способности у меня нет, а в редакторе способностей она не позволяет что-либо существенно поменять. Так же я пробовал и через "сесть на грифона" - но нихрена не получилось.
Sergey105:
заставь юнита двигаться к вышке и начинай отслеживать дистанцию между вышкой и юнитом и если дистанция меньше требуемого то делаешь нужные действия
чтобы узнать дистанцию
x = GetUnitX(вышка) - GetUnitX(юнит)
y = GetUnitY(вышка) - GetUnitY(юнит)
dist = SquareRoot(x*x + y*y);
dist товя дистанция между вышкой и юнитом
и да тебе работать с таймером
Да про таймер-то я знаю, для отслеживания IDшника нужон. Но твой вариант попробую
DemonoiD #5 - 2 недели назад 0
orc01, ну Сунь ему тогда бафи или невидимую способность пустышку и по ней чекай.
not_name #6 - 1 неделю назад 0
а что у тебя с сесть на грифона не устраивает?
orc01 #7 - 1 неделю назад 0
not_name:
а что у тебя с сесть на грифона не устраивает?
Хотя бы то, что юнитов, коих можно посадить в вышку больше одного, а примерно, на деле, 12. А в способности можно задать только одного связанного - следовательно, надо делать 12 отдельных способностей. Удобно будет игроку искать среди них "ну где же, билять, впустить в вышку пехотинца"?
DemonoiD:
orc01, ну Сунь ему тогда бафи или невидимую способность пустышку и по ней чекай.
А толку-то от этого? Чем я проверю, что юнит подошел к вышке? Более того, вышка при этом не одна, их вообще строить можно покуда ресурсы есть - так как узнать что он подошел именно к той вышке, которая его звала?
В событии нельзя юзать локальные переменные, я банально не могу задать "юнит в радиусе от юнита"
quq_CCCP #8 - 1 неделю назад 0

orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...
orc01 #9 - 1 неделю назад 0
quq_CCCP:
orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...
Да решил не извращаться, дал нужным юнитам способность пустышку - теперь они сами бегут к вышке, и при юзании превращаются. Странно, что я до этого не додумался сразу, а мучался исходя от того, что способностью должна обладать вышка... А так юнитам даже указал, какуие бонусы от их нахождения получит вышка(саморемонт от крестьян, замедляющую ауру от волшебниц...)