![]()
Линкольн
Barg Ent.
![]() offline
Опыт:
4,812Активность: |
Способы определить боевую единицу между двумя точками
Не уверен, что угадал с разделом. Подскажите пожалуйста все возможные способы определить боевую единицу между двумя точками. Возможно, кто-нибудь осведомлен о новых способах, алгоритмах поиска. |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
J
expert
![]() offline
Опыт:
47,997Активность: |
создаем группу, с определенным шагом идет в направлении от одного юнита к другому, и в определенном радиусе берем всех юнитов в группу, в конце имеется группа со всеми юнитами между точками, другого способа не знаю |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Линкольн
Barg Ent.
![]() offline
Опыт:
4,812Активность: |
J
Система не позволяет применить такой способ, поскольку определять нужно для каждого игрока в отдельности, на больших отрезках, в таймере с малым периодом. Линкольн добавил: Может такое случится, что другого способа просто нет. |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
J
expert
![]() offline
Опыт:
47,997Активность: |
ну есть еще вариант
x = maxx-minx
y = maxy-miny len = sqrt(x*x+y*y) x = x/len y = y/len делать большой регион с началом в одоной точке и в конце в другой, брать всех юнитов там и для каждого юнита делать что-то типо ux = GetUnitX(u)-minx uy = GetUnitY(u)-miny len = sqrt(ux*ux+uy*uy) ux = ux/len uy = uy/len cos = x*ux+y*uy if (len*cos < DIS) then action endif он естествено не оптимальнее, но просто как еще один способ, тут уже нету шагов, юниты берутся ровно по зажаному растоянию DIS от линии, в то время как в первом способе точность выборки зависила от шага |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
agentex
![]() offline
Опыт:
34,534Активность: |
Линкольн вот пример без пика кругами, делал для человека не шарящего в джасе, поэтому на гуи+кс
|
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]()
online
Опыт: отключен
|
не проще создать рект и регион и проверять isunitinregion ? |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|