Goodie
offline
Опыт:
2,825Активность: |
Проблема с поворотами
У меня такая проблема Наводишь точку, создается камешек и двигается в определенную сторону, а стороны я показал. Как мне это сделать? |
11.03.2013, 13:22 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
молча
где ваши попытки что либо сделать? |
11.03.2013, 13:25 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
Hate, Ах, точно) Эссенция луны и все такое. Забыл =/
Спелл похож на Инвокера из доты. (Тыкать в опен доту толку нету. Его нет там)
((код jass
struct Data_Meteor
unit a unit b real f = 1000. real x real y real dist = 700. integer count = 0 endstruct function AngleBetweenXY takes real x1, real y1, real x2, real y2 returns real
return bj_RADTODEG * (Atan2(y2 - y1, x2 - x1)) endfunction function DistanceBetweenXY takes real x1, real y1, real x2, real y2 returns real
return SquareRoot((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) endfunction function OffsetX takes real x1, real dist, real angle returns real return x1 + dist * Cos(angle * bj_DEGTORAD) endfunction function OffsetY takes real y1, real dist, real angle returns real return y1 + dist * Sin(angle * bj_DEGTORAD) endfunction function Trig_SPELL_ll_METEOR_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A000' endfunction function onDamage takes nothing returns nothing
local timer Timer = GetExpiredTimer() local Data_Meteor data = GetTimerData(Timer) local real dist = DistanceBetweenXY(GetUnitX(data.b),GetUnitY(data.b),data.x,data.y) set data.count = data.count+1 if (data.count >=5) then set data.count = 0 call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Human\\HCancelDeath\\HCancelDeath.mdl",GetUnitX(data.b),GetUnitY(data.b))) call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\FlameStrike\\FlameStrike1.mdl",GetUnitX(data.b),GetUnitY(data.b))) endif if (dist >= 50) call SetUnitPosition(data.b,OffsetX(GetUnitX(data.b),15.,AngleBetweenXY(GetUnitX(data.b),GetUnitY(data.b),data.x,data.y)),OffsetY(GetUnitY(data.b),15.,AngleBetweenXY(GetUnitX(data.b),GetUnitY(data.b),data.x,data.y))) else call KillUnit(data.b) call DestroyTimer(Timer) call data.destroy() set Timer = null endif endfunction function onFly takes nothing returns nothing
local timer Timer = GetExpiredTimer() local Data_Meteor data = GetTimerData(Timer) local real dist = DistanceBetweenXY(GetUnitX(data.b),GetUnitY(data.b),data.x,data.y) if (dist >= 50.) then set data.f = data.f-15. call SetUnitFlyHeight(data.b,data.f,0.00) call SetUnitPosition(data.b,OffsetX(GetUnitX(data.b),15.,AngleBetweenXY(GetUnitX(data.b),GetUnitY(data.b),data.x,data.y)* bj_DEGTORAD),OffsetY(GetUnitY(data.b),15.,AngleBetweenXY(GetUnitX(data.b),GetUnitY(data.b),data.x,data.y)* bj_DEGTORAD)) else set data.x=data.x+700 call SetUnitTimeScale(data.b,1.0) call TimerStart(Timer,0.03,true,function onDamage) set Timer = null endif set Timer = null endfunction function Trig_SPELL_ll_METEOR_Actions takes nothing returns nothing
local Data_Meteor data = Data_Meteor.create() local timer Timer = NewTimer() local real face local real dist set data.a= GetTriggerUnit() set face = GetUnitFacing(data.b) set data.x = GetSpellTargetX() set data.y = GetSpellTargetY() set dist = DistanceBetweenXY(GetUnitX(data.a),GetUnitY(data.a),data.x,data.y) set data.b = CreateUnit(GetOwningPlayer(data.a),'e000',GetSpellTargetX() - 1000. ,GetSpellTargetY(),face) call SetUnitFlyHeight(data.b,data.f,0) call SetUnitTimeScale(data.b,0.05) call SetTimerData(Timer,data) call TimerStart(Timer,0.03,true,function onFly) set Timer = null endfunction ===========================================================================
function InitTrig_SPELL_ll_METEOR takes nothing returns nothing set gg_trg_SPELL_ll_METEOR = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_SPELL_ll_METEOR, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_SPELL_ll_METEOR, Condition( function Trig_SPELL_ll_METEOR_Conditions ) ) call TriggerAddAction( gg_trg_SPELL_ll_METEOR, function Trig_SPELL_ll_METEOR_Actions ) endfunction )) Отредактировано Goodie, 11.03.2013 в 14:26. |
11.03.2013, 13:35 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,117Активность: |
второй кэповский вопрос - что не работает?
и третий - где отладка?
Hate добавил:
к сожалению это ни о чем не говорит |
11.03.2013, 13:37 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Потому что у инвокера на стандарте сделано, очевидно же. Укажите, что конкретно не работает, предоставьте данные отладки, весь код рассматривать никому не хочется. |
11.03.2013, 13:53 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
Проблема в первом посте =/ |
11.03.2013, 14:17 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
я не понял в чем проблема,может в том что
=>=>=>
|
11.03.2013, 14:23 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
Nerevar, Не, эт я удалил, в движениях проблема |
11.03.2013, 14:28 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Отладка будет или закрываем тему? |
11.03.2013, 14:34 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
хз короче код у тебя бредовый оче, должно быть примерно так:
И не обязательно создавать отдельный таймер на нанесение урона, между прочим. |
11.03.2013, 14:35 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Goodie
offline
Опыт:
2,825Активность: |
Doc, Лол. Получилось, что он крутится вокруг героя :D Мне не так надо Вот если тыкнуть в верх спелл, то он будет лететь с лева на право. Если тыкнуть вправо, то он будет лететь с верха вниз. Если тыкнуть вниз, то он будет лететь право на лево. Если тыкнуть влево, то он будет лететь с низа в верх |
11.03.2013, 14:52 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
Goodie, ну и в чем проблема?
Nerevar добавил:
как только получу в лс адекватный пост с дебагом,с расписанной проблемой,способами решения и собственными размышлениями,открою тему |
11.03.2013, 15:12 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|