Сейчас 21:32:44 Четверг, 28 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] Нужна помощь с установкой дистанции
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). Но это раскрытые полярки


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал 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


 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz