Суть способности заключается в том, что создаётся 8 юнитов, и все они ходят симметрично центру окружности по приказам главного юнита. Проблема в том, что если их заставить сужать круг, то они довольно быстро реагируют и без остановок, даже если спамить кнопку передвижения. Но если радиус круга увеличивать (т.е. все юниты разойдутся во все стороны), то начинают тупить, если выдавать по два приказа в секунду. Можно ли как-то это исправить? Карта довольно маленькая и на ней очень мало юнитов.

Принятый ответ

Из-за большой дистанции получения приказа тоже могут возникнуть проблемы. Какова дистанция получения приказа у этих юнитов?
А, посмотрел видео. У вас там вроде все норм. А тупят потому что натыкаются на препядствия.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
26
5 лет назад
0
А каким триггером реализована способность?
0
15
5 лет назад
0
8gabriel8:
А каким триггером реализована способность?
А что конкретно интересует? Событие ловит приказ главного юнита и этот же приказ отдаётся остальным через IssuePointOrder(). Т.е. нажал за главного юнита двигаться куда-то, и остальные тоже пошли в какую-то сторону (каждый в разную).
0
26
5 лет назад
0
Это не объясняет, как происходит уменьшение и увеличение круга.
0
15
5 лет назад
0
8gabriel8:
Это не объясняет, как происходит уменьшение и увеличение круга.
Как видно, юниты сильно тупят, когда круг увеличиваются, и быстро реагируют, когда сужается.
0
26
5 лет назад
0
Так как реализовал движение каждого юнита, по какой формуле триггер высчитывает, что юнит должен пойти не в ту точку, куда отправлен основной юнит, а в ту, что ему предназначена?
0
15
5 лет назад
Отредактирован JackFastGame
0
8gabriel8:
Так как реализовал движение каждого юнита, по какой формуле триггер высчитывает, что юнит должен пойти не в ту точку, куда отправлен основной юнит, а в ту, что ему предназначена?
Создаётся центр окружности в месте, где был главный юнит. Он телепортируется в указанную точку и таким образом задаёт радиус окружности, и создаётся 8 юнитов на этой окружности. С этого момента каждый юнит двигается симметрично оси своего радиуса, т.е. если основной юнит сместился на 30 градусов и его расстояние увеличилось на 200 от центра, то каждый юнит также смещает своё положение относительно центра окружности на 30 градусов и 200 расстояния.
range - расстояние от центра окружности до точки приказа главного юнита
angle - угол от центра окружности до точки приказа + 40*i, где i - номер дополнительного юнита. (т.е. у каждого следующего угол сдвинут на 40 градусов)
targetx = x+range*Cos(bj_DEGTORAD*angle)
targety = y+range*Sin(bj_DEGTORAD*angle)
Отдаётся приказ smart на targetx и targety.
0
26
5 лет назад
0
Формулы именно такие, а не:
(x+range)*cos(bj_DEGTORAD*angle)
(y+range)*sin(bj_DEGTORAD*angle)
это вопрос
0
15
5 лет назад
Отредактирован JackFastGame
0
8gabriel8:
Формулы именно такие, а не:
(x+range)*cos(bj_DEGTORAD*angle)
(y+range)*sin(bj_DEGTORAD*angle)
это вопрос
Я скопировал из триггера
x и y - координаты центра окружности
0
26
5 лет назад
0
А проверял на карте с ровным ландшафтом и полной видимостью, там тоже тормозят при увеличении расстояния?
0
15
5 лет назад
0
8gabriel8:
А проверял на карте с ровным ландшафтом и полной видимостью, там тоже тормозят при увеличении расстояния?
На маленькой карте без препятствий всё ок
0
26
5 лет назад
0
Тогда либо из-за невидимости точки назначения тормозит, либо из-за преград на пути, либо из-за всего вместе.
Надо поискать причину с помощью тестов
Но на вскидку предполагаю, что поиск пути из-за препятствий притормаживает.
Возможно лаги происходят из-за цикла в триггере, где отдаёшь приказ всем иллюзиям. Типа все действия в триггере выполняются последовательно, Каждый поиск пути требует чуть-чуть времени, что замедляет все остальные действия. Но это не точно, надо проверять.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.