Goodie
offline
Опыт:
2,825Активность: |
Не правильный расчет угла =/
Нужна помощь. Нужно расчитать угол создания юнита
((код jass
void PandaHitCast(unit trg,unit caster,real damage,real radius){
int A = 1 real x = 0.00 real y = 0.00 do{ x =GetUnitX(trg) + radius*Cos(bj_PI/4*(A*2)) y = GetUnitY(trg) + radius*Sin(bj_PI/4*(A*2)) SlideToPoint.onCast(new unit(GetOwningPlayer(caster),dPANDA,x,y,(A*90)-180),trg) debug BJDebugMsg("-----" + I2S(A) + "------") debug BJDebugMsg(R2S(x) + " X") debug BJDebugMsg(R2S(y) + " X") debug BJDebugMsg(R2S((A*90)-180) + " Angle") debug BJDebugMsg("-----------") }whilenot(A++==4) clear } )) Cоздаешь на радиусе 300, все отлично. Если уже больше 300, то юнит который создается слева, уходит вобще далеко |
31.03.2013, 16:02 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
((код jass
x =GetUnitX(trg) + radius*Cos(bj_PI/4*(A*2)) y = GetUnitY(trg) + radius*Sin(bj_PI/4*(A*2)) )) Какое странное вычисление, P = 3.14 а bj_DEGTORAD = 0.0174532 следовательно формула круга будет X + расстояние * Cos( (тут рассчёт угла в градусах) * 0.0174532 ) |
31.03.2013, 16:18 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
quq_CCCP, А теперь пожалуйста в формуле можно? Я вобще не шарю =/ Абсолютно не знаю что писать в расчеты =/ |
31.03.2013, 16:19 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
Goodie, Чтобы найти точки от координаты X нужно прибавить к X число на которое ты хочешь сместить координату, затем умножить её на СOS( SIN для y ) угла в радианах, да именно в радианах, чтобы перевести углы в радианы нужно умножить угол в градусах на выражение P (пи = 3.14 и тд.) поделённое на 180, или проще говоря Угол в градусах * 0.0174532 и он переведётся в радианы.
((код jass
x + dist * Cos( angle * 0.0174532 )
y + dist * Sin( angle * 0.0174532 ) )) quq_CCCP добавил: Goodie, напиши словами что те надо сделать, я тебе функцию скину... тока подробно со всеми значениями какие будут юзатся для теста |
31.03.2013, 16:34 | #4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
вот так должны создатся юниты Где стрелки, это дамми, они должны смотреть прямо на врага |
31.03.2013, 20:00 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
youtube
сктыщь
offline
Опыт:
8,025Активность: |
почти так как тебе надо, ток увеличь радиус и смени угол мальца (на 180) |
01.04.2013, 07:41 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
((код jass
void PandaHitCast(unit trg,unit caster,real damage,real radius){ int A = 1 real x = 0.00 real y = 0.00 do{ x = GetUnitX(trg) + radius * Cos( ( 45.00 * A ) * 0.0174532 ) y = GetUnitY(trg) + radius * Sin( ( 45.00 * A ) * 0.0174532 ) SlideToPoint.onCast(new unit(GetOwningPlayer(caster),dPANDA,x,y,45.00 * a - 180.00,trg) debug BJDebugMsg("-----" + I2S(A) + "------") debug BJDebugMsg(R2S(x) + " X") debug BJDebugMsg(R2S(y) + " X") debug BJDebugMsg(R2S((A*90)-180) + " Angle") debug BJDebugMsg("-----------") }whilenot(A++==4) clear } )) вот так проверь... |
01.04.2013, 14:21 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
quq_CCCP, Поправил вместо 45 на 90 и все ок. Спасибо. Закрывайте тему |
01.04.2013, 15:58 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|