Подскажите, а как правильно вычислить расстояние между точками, если цель постоянно в движении?
Логично сделать локальную переменную каждые N cекунд, затем ее обнулять, но тогда же будет несколько целей на разных точках.
В Jass вообще есть понятие динамической точки и как ее создать?
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
31
2 месяца назад
0
создаешь периодический таймер, и проверяешь расстояние до цели.
В чем сложность..?
Ответы (1)
0
20
2 месяца назад
0
Алексей Андреич, Может быть....
0
18
2 месяца назад
Отредактирован EugeAl
0
В джасс вообще не нужно мерить расстояние между точками, можно напрямую измерить расстояние между юнитами )
Ответы (3)
0
20
2 месяца назад
0
EugeAl, Тогда утечка, потому что так остается точка в памяти. Тогда нужно создать переменную типа "точка" и обнулить или через координаты х и у
Просто Позиция юнита не проканает
0
28
2 месяца назад
0
SсRealm, ну и где тут утечка?
function GetSqrDistanceWidgets takes widget w1, widget w2 returns real
    local real dx = GetWidgetX(w1) - GetWidgetX(w2)
    local real dy = GetWidgetY(w1) - GetWidgetY(w2)
    return dx * dx + dy * dy
endfunction

function GetDistanceWidgets takes widget w1, widget w2 returns real
    return SquareRoot(GetSqrDistanceWidgets(w1, w2))
endfunction
0
18
1 месяц назад
0
SсRealm, не будет утечек, потому что используются х и у юнитов, цифры не утекают
0
23
2 месяца назад
Отредактирован konvan5
0
А в чем сложность вычислять расстояние в те моменты, когда тебе нужно? А не хранить его и перезаписывать каждые 0.01 сек. И сразу обнуляешь без утечек и тд. Зачем хранить?

Тебе же нужно вычислить и что-то применить в нужные точки в нужный момент времени, а если нужен перерасчет потом - к примеру снаряд должен лететь в сторону юнита и перенаправляться если он движется, то каждый тик движения вычисляй угол и расстояние заново если так нужно.

Зависит от задачи, а по твоим словам непонятна, что за задача.
1
7
2 месяца назад
Отредактирован ReiGyl
1
Берешь искомые координаты в нужные отрезки времени и сравниваешь по функции IsUnitInRangeXY(), она учитывает физ. размер юнита и расстояние до него из этой координаты точки.
Если всё завязано только на юнитах, то можно вообще брать функцию IsUnitInRange().
0
9
2 месяца назад
0
Расстояние между юнитами можно мерить в различных метриках. Например вы можете использовать метрику Манхеттена r = max(|x1 - x2|, |y1-y2|) , евклидову (L2) r = sqrt((x1-x2)^2+(y1-y2)^2), L1 метрику r = abs(x1-x2) + abs(y1-y2). Если под точкой имеется в виду handle Location, динамически можно менять ее значения x и y. Что конкретно понимается под термином динамическая точка? Точка которая двигается?
0
33
2 месяца назад
Отредактирован PUVer
0
Я делал систему шагов в God's Word. Отлавливал движение. Но триггеров уже не помню. Надо смотреть.

А вообще лучше спроси у него. Он мне делал систему автопоиска предметов на карте. Полюбому шарит.
0
15
1 месяц назад
0
function GetDistanceBetween takes real x1, real y1, real x2, real y2 returns real
return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
endfunction
И обновлять данные в локалке по необходимости, но лучше конечно их получать в момент требования.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.