local unit u = GetTriggerUnit()
local real f = GetUnitFacing(u)
local real x1 = GetUnitX(u)
local real y1 = GetUnitY(u)
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real a = Atan2(y-y1,x-x1)
set x=x+100.*Cos(a)
set y=y+100.*Sin(a)
call AddSpecialEffect( "Rock Slam.mdx",x,y)
мне нужно что бы Rock Slam создался в ту сторону куда смотреть персонаж со смешением на 100
На пешите пример

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

перевод градусы в радианы, радианы в градусы
Ну чтобы перевести, из градусов в радианы
180° = pi радиан = 3,14...
Если знаешь расположение градусов в окружности (там 2pi = 360°, или pi/2 = 90°)
60° = pi/3 радиан = 3,14/3 = 1,0466
30° = pi/6 радиан = 3,14/6 = 0,5233
Или использовать готовую формулу
Angle to Radians => Angle *pi / 180 (формула)
pi/180 = 3,14/180 = 0,01744 (коэффициент, записан в варе в переменную-множитель bj_DEGTORAD)
_________________
Чтобы перевести из радиан в градусы
Использую формулу
Radians to Angle => Radians * 180 / pi
1 радиан = 57,32°
0,5 радиан = 0,5 * 180/3,14 = 28,6°
Используют точно также переменную-множитель bj_RADTODEG, но с другим названием. Там было Deg to Rad (перевести в радианы), здесь Rad to Deg (в градусы)
тут есть погрешности до десятичных, до сотых и более. Поэтому может не соответствовать. Это как пример. Считал сам. А вообще юзайте готовые переменные и не морочьте голову
код
local unit u = GetTriggerUnit()
local real a = GetUnitFacing(u) * bj_DEGTORAD //GetUitFacing возвращает параметры в градусы, поэтому нужно перевести в радианы
local real x = GetUnitX(u) + 100. * Cos(a)
local real y = GetUnitY(u) + 100. * Sin(a)
//потом то-то делаешь. x, y
xgm.guru/p/wc3/179127 тут есть пример карта, на гуи там, но переделать можно и на jass (там кастер двигается в ту сторону, куда смотрит). И пример в качестве кода, если нужно двигать относительно двух точек (сделал пример движение снаряда от Кастера к цели)
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
32
7 лет назад
0
Куда смотрит или кастует спелл?
local real f = GetUnitFacing(u) // вот твой угол поворота юнита, но это не угол между юнитом и точкой каста заклинания.
//кстати да, косинус берется только от угла в радианах а не в градусах...
0
14
7 лет назад
0
куда смотрет спел нот таргет
0
32
7 лет назад
0
Ну как перевести градусы в радианы и что такое радианы рассказывают в школе, если еще не рассказали - гугл в помощь, там как никак картинки есть...
0
14
7 лет назад
0
а ты не можеш написать код?
1
29
7 лет назад
1
Советую почитать эту статью
И посмотреть реализацию функции AngleBetweenPoints в Blizzard.j, которая тебе и нужна
Ну и у тебя {x1, y1} и {x, y} одинаковые, тебе надо вторые координаты брать через GetOrderPointLoc
0
14
7 лет назад
0
а через Real это возможно реализовать
6
27
7 лет назад
Отредактирован MpW
6
перевод градусы в радианы, радианы в градусы
Ну чтобы перевести, из градусов в радианы
180° = pi радиан = 3,14...
Если знаешь расположение градусов в окружности (там 2pi = 360°, или pi/2 = 90°)
60° = pi/3 радиан = 3,14/3 = 1,0466
30° = pi/6 радиан = 3,14/6 = 0,5233
Или использовать готовую формулу
Angle to Radians => Angle *pi / 180 (формула)
pi/180 = 3,14/180 = 0,01744 (коэффициент, записан в варе в переменную-множитель bj_DEGTORAD)
_________________
Чтобы перевести из радиан в градусы
Использую формулу
Radians to Angle => Radians * 180 / pi
1 радиан = 57,32°
0,5 радиан = 0,5 * 180/3,14 = 28,6°
Используют точно также переменную-множитель bj_RADTODEG, но с другим названием. Там было Deg to Rad (перевести в радианы), здесь Rad to Deg (в градусы)
тут есть погрешности до десятичных, до сотых и более. Поэтому может не соответствовать. Это как пример. Считал сам. А вообще юзайте готовые переменные и не морочьте голову
код
local unit u = GetTriggerUnit()
local real a = GetUnitFacing(u) * bj_DEGTORAD //GetUitFacing возвращает параметры в градусы, поэтому нужно перевести в радианы
local real x = GetUnitX(u) + 100. * Cos(a)
local real y = GetUnitY(u) + 100. * Sin(a)
//потом то-то делаешь. x, y
xgm.guru/p/wc3/179127 тут есть пример карта, на гуи там, но переделать можно и на jass (там кастер двигается в ту сторону, куда смотрит). И пример в качестве кода, если нужно двигать относительно двух точек (сделал пример движение снаряда от Кастера к цели)
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.