[Вопрос] Нужна помощь с установкой дистанции
|
|
Mep3aB4uK | Дата: Вторник, 06 Сентября 2011, 22:00:47 | Сообщение # 1 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Нужно запустить снаряд на x растояние... так я делаю: local real x1=GetWidgetX(u) local real y1=GetWidgetY(u) local real x2=x1+350.+50.*GetUnitAbilityLevel(u,'A000') local real y2=y1+350.+50.*GetUnitAbilityLevel(u,'A000') //Растояние должно быть 400, 450, 500 ( в зависимости уровня) Но когда текстагом вывожу сообщение SquareRoot((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) то показывает 560, 630, 700 и сам вопрос как правильно задать дистанцию?
|
|
|
|
[DS] | Дата: Среда, 07 Сентября 2011, 05:01:46 | Сообщение # 2 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| создаешь еще 3 реальных, это а, хх и уу. а = Угол Поворота твоего u хх = х1 +350*Кос(а) уу = у1 +350*Син(а) a = Угол от х1 и у1 до хх и уу. local real x2=x1+350. +(50.*GetUnitAbilityLevel(u,'A000'))*Кос(а) local real y2=y1+350. +(50.*GetUnitAbilityLevel(u,'A000'))*Син(а)
|
|
|
|
Mep3aB4uK | Дата: Среда, 07 Сентября 2011, 13:24:52 | Сообщение # 3 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| [DS], ну вот по логике то же, только угол между героем и точкой спелла local real x1=GetWidgetX(u) local real y1=GetWidgetY(u) local real a=Atan2(GetSpellTargetY()-y1,GetSpellTargetX()-x1) local real x2=x1+350.+50.*GetUnitAbilityLevel(u,'A000')*Cos(a) local real y2=y1+350.+50.*GetUnitAbilityLevel(u,'A000')*Sin(a) но все равно не то...
|
|
|
|
Ty3uK | Дата: Среда, 07 Сентября 2011, 14:15:05 | Сообщение # 4 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| А bj_DEGTORAD? Вы же значение в радианах получаете, а не в градусах
Добавлено (07 Сентябрь 2011, 14:09:03) --------------------------------------------- Упс, вроде наоборот... Переведите в радианы через бж переменную и используйте радианы
Добавлено (07 Сентябрь 2011, 14:13:52) --------------------------------------------- Раскрой полярки. Вроде так Code real x = GetUnitX(u) + расстояние * Cos(GetUnitFacing(u) * bj_DEGTORAD) Code real y = GetUnitY(u) + расстояние * Sin(GetUnitFacing(u) * bj_DEGTORAD) вроде так, но не уверен
Добавлено (07 Сентябрь 2011, 14:15:05) --------------------------------------------- Ну и собственно Location(x, y). Но это раскрытые полярки
Сообщение отредактировал Ty3uK - Среда, 07 Сентября 2011, 14:46:18 |
|
|
|
[DS] | Дата: Среда, 07 Сентября 2011, 15:28:10 | Сообщение # 5 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| 50.*GetUnitAbilityLevel(u,'A000') - запиши это в переменную, а то мне кажется тупить будет. Ну так, возьми и проверяй расстояния от героя до спеллтаргет'а и все. А макс. расстояния в ро укажешь в своем спелле.
|
|
|
|
Mep3aB4uK | Дата: Среда, 07 Сентября 2011, 18:16:52 | Сообщение # 6 |
9 уровень
Группа: Проверенные
Сообщений: 1019
Награды: 0
Репутация: 135
Блокировки:
| Если игрок укажет на растояние 200 то и снаряд пролетит 200 (если проверять растояние до точки), а надо определенную дистанцию, типа волны силы. Попробую еще через точки...
|
|
|
|
[DS] | Дата: Среда, 07 Сентября 2011, 18:29:45 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| я уже выще написал, ток вместо угла поворота вставь: a = Atan2(GetSpellTargetY()- y1,GetSpellTargetX()-x1)*bj_DEGTORAD
|
|
|
|