![]()
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, то юнит который создается слева, уходит вобще далеко |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
95,470Активность: |
((код 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 ) |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Goodie
![]() ![]() offline
Опыт:
2,825Активность: |
quq_CCCP, А теперь пожалуйста в формуле можно? Я вобще не шарю =/ Абсолютно не знаю что писать в расчеты =/ |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
95,470Активность: |
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, напиши словами что те надо сделать, я тебе функцию скину... тока подробно со всеми значениями какие будут юзатся для теста |
![]() |
#4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Goodie
![]() ![]() offline
Опыт:
2,825Активность: |
вот так должны создатся юниты Где стрелки, это дамми, они должны смотреть прямо на врага |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
youtube
сктыщь
![]() ![]() offline
Опыт:
8,025Активность: |
почти так как тебе надо, ток увеличь радиус и смени угол мальца (на 180) |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
95,470Активность: |
((код 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 } )) вот так проверь... |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Goodie
![]() ![]() offline
Опыт:
2,825Активность: |
quq_CCCP, Поправил вместо 45 на 90 и все ок. Спасибо. Закрывайте тему |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|