Хочу понять как работать с X и Y ( нешарю в джасе )
call SetUnitX(GetEnumUnit(), GetLocationX(udg_all_point[2]) )
call SetUnitY(GetEnumUnit(), GetLocationY(udg_all_point[2]) )
хочу сделать типа ветра сдувающего ( но если двигать стандартной мгновенно переместить юнитов стопит )( через X и Y не стопит )
если статья как работать с X и Y ?
вот карту что именно я хочу сделать

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

local location loc=GetUnitLoc(GetEnumUnit())
local location tcLoc=GetUnitLoc(udg_topot_caster)
local real a=AngleBetweenPoints(tcLoc, loc)
call SetUnitX(GetEnumUnit(),GetLocationX(loc) +CosBJ(a) * 10.00 )
call SetUnitY(GetEnumUnit(),GetLocationY(loc) +SinBJ(a) * 10.00 )
call RemoveLocation(tcLoc)
call RemoveLocation(loc)
set tcLoc=null
set loc=null

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
7 лет назад
Отредактирован nvc123
0
GetLocalPlayer, без разницы на чём базируются
в них есть понятие координатной плоскости, теорема пифагора и определение синуса/косинуса
этого достаточно
2
17
7 лет назад
2
nvc123, в учебнике мы узнаем следующее:
  • Квадрат гипотенузы равен сумме квадратов катетов
  • Косинусом угла прямоугольного треугольника называется отношение прилежащего катета к гипотенузе
  • Синусом угла прямоугольного треугольника называется отношение противолежащего катета к гипотенузе
  • Так же мы узнаем о некоторых тригонометрических тождествах, отношениях синусов к косинусам и так далее
Ничего из вышеуказанного даже не намекает на работу связанную с поиском взаимного расположения точек. Я бы хотел посмотреть на учебник 7-го класса, в котором будет располагаться информация, позволяющая получить практические знания для проведения требуемой работы.
5
16
7 лет назад
Отредактирован DracoL1ch
5
Каюсь, в школе я больше пинал БИНОМЫ, чем учился, о чем немного и сожалею сейчас. Геометрия тоже была в списке "ненавижусука" предметов, поэтому движение и хитрости углов мне в итоге довелось изучить уже на примерах скиллов доты. Вот если бы хоть кто-нбудь показывал реальную применимость этих синусов в жизни, авось и учили бы их охотнее.
Другими словами - учись на примерах остальных. В 2д-системе, которой является варкрафт, нет нужды погружаться в пространственную геометрию, плоскости достаточно. Высота - обособленная координата без особых запросов Поэтому находи в любой карте навык с движением, которое тебе надо, и читай код.
Ну а если эстет и хочешь, чтобы юнит рисовал восьмерку с радиусом кривизны равным 3х навык абилки, тогда да, придется углубиться.
0
5
7 лет назад
0
начнем с 1 если бы кто то открыл бы мою карту там бы увидели что с косинусами и синусами я работать умею
2 ) причем тут геометрия если это математика 9 класс (если память не изменяет)
3 ) похоже я не умею формулировать вопросы ))))
4 ) call SetUnitPositionLoc( GetEnumUnit(), Location(( GetLocationX(GetUnitLoc(GetEnumUnit())) + ( CosBJ(AngleBetweenPoints(GetUnitLoc(udg_topot_caster), GetUnitLoc(GetEnumUnit()))) * 10.00 ) ), ( GetLocationY(GetUnitLoc(GetEnumUnit())) + ( SinBJ(AngleBetweenPoints(GetUnitLoc(udg_topot_caster), GetUnitLoc(GetEnumUnit()))) * 10.00 ) )) )
как это превратить
call SetUnitX SetUnitY ( пробовал сам варик не запускается )
1
16
7 лет назад
1
local location loc=GetUnitLoc(GetEnumUnit())
local location tcLoc=GetUnitLoc(udg_topot_caster)
local real a=AngleBetweenPoints(tcLoc, loc)
call SetUnitX(GetEnumUnit(),GetLocationX(loc) +CosBJ(a) * 10.00 )
call SetUnitY(GetEnumUnit(),GetLocationY(loc) +SinBJ(a) * 10.00 )
call RemoveLocation(tcLoc)
call RemoveLocation(loc)
set tcLoc=null
set loc=null
Принятый ответ
4
29
7 лет назад
Отредактирован Doc
4
Вы че тут рофлите просто? Че это за жесть. Ну попытались бы хоть развернуть формулы и посмотреть что вы конвертите из одного в другого а потом обратно, зачем?
// target = origin + normalize(source - origin) * speed
u = GetEnumUnit()
ux = GetUnitX(u)
uy = GetUnitY(u)

tx = GetUnitX(udg_topot_caster)
ty = GetUnitY(udg_topot_caster)

dx = ux - tx
dy = uy - ty

len = SquareRoot(dx * dx + dy * dy)
// Also need a 0 len check
dx = dx / len
dy = dy / len

SetUnitX(u, ux + dx * 10)
SetUnitY(u, uy + dy * 10)
struct
	real x
	real y
endstruct
Нужна только чтобы туда добавить методы для работы с векторами.
Углы, косинусы, синусы в большинстве случаев не нужны ВООБЩЕ.
1
16
7 лет назад
1
можно и развернуть, если есть желание. проще копипастить
0
28
7 лет назад
Отредактирован nvc123
0
not_name, я открыл и увидел что ты не знаешь даже определений синуса и косинуса не говоря уже о работе с ними
GetLocalPlayer, если тебе этой инфы не хватает чтобы научиться работать с координатами то лучше тебе бросить программирование и заняться вязанием
там координаты ненужны а вязанные носки всегда пригодятся
Doc:
Углы, косинусы, синусы в большинстве случаев не нужны ВООБЩЕ.
я имел ввиду определение косинуса и синуса из которых и выводится то что ты написал
про то что углы ненужны нафиг это понятно
их только если в параметрическом алгоритме окружности юзать можно
во всех остальных случаях легко справляются и без них
0
21
7 лет назад
0
^ только вы все забываете проверять, что x и y в пределах границы карты, при выходе за границы сразу будет фатал, если попытаться туда юнит пихнуть
0
28
7 лет назад
0
ClotPh, это уже должен автор вопроса делать
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.