Добавлен Parom_Harona
Помогите создать движение волны, она только появляется с зади и там же исчезает. А, я пытаюсь сделать, что бы она посунулась в перед на 2к
Принятый ответ
quq_CCCP:
Как сделать - очень просто, это классический спел по типу волна, представляет из себя векторное движение дамми юнита с помощью таймера, примеры есть в статьях и наработках. Вычисляешь угол между применившим заклинание и точкой применения заклинния, если в качестве цели указан юнит, то угол ищем между применившим и целью, создаем даммика и с помощью таймера в 0.03125 (32 раза в сек более чем достаточно) двигаем дамми юнита в ранее найденном нами направлении, по истечению определенного кол-ва тиков таймера, ну 32х30 это примерно 0.9 секунды и 960 ед расстояния (если двигать цель по 30 ед. за каждый тик), ну так же если нужно наносить урон врагам, для этого используются две группы и фильтр.Пример кодаfunction Group_Frost_Wave_Actions takes nothing returns nothing local DamageData dd = bj_forLoopAIndexEnd local unit Enemy = GetEnumUnit( ) call GroupAddUnit( dd.grp, Enemy ) set bj_lastCreatedUnit = CreateUnit( Player( PLAYER_NEUTRAL_PASSIVE ), 'hatk', GetUnitX( Enemy ), GetUnitY( Enemy ), GetUnitFacing( Enemy ) ) call SetUnitPathing( bj_lastCreatedUnit, false ) call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 0.50 ) call UnitAddAbility( bj_lastCreatedUnit, 'A06Z' ) call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A06Z', dd.id ) call SetUnitX( bj_lastCreatedUnit, GetUnitX( Enemy ) ) call SetUnitY( bj_lastCreatedUnit, GetUnitY( Enemy ) ) if IssueTargetOrderById( bj_lastCreatedUnit, 852243, Enemy ) then call UnitDamageTarget( dd.attacker, Enemy, dd.dmg, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_COLD, WEAPON_TYPE_WHOKNOWS ) call DestroyEffect( AddSpecialEffectTarget( "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl", Enemy, "origin" ) ) endif set bj_lastCreatedUnit = null set Enemy = null endfunction function Timer_Frost_Wave_Expires takes nothing returns nothing local timer t = GetExpiredTimer( ) local DamageData dd = GetDataBX( t ) set dd.time = dd.time + 1 if dd.time > 25 then //25 * 32 = 800 call DestroyEffect( dd.fx ) call KillUnit( dd.attacked ) call GroupClear( dd.grp ) call ReleaseGroup( dd.grp ) call PauseTimer( t ) call RemoveDataBX( t ) call DestroyTimer( t ) call dd.clear( ) call dd.destroy( ) else set dd.rx = dd.rx + 32.00 * Cos( dd.hp ) set dd.ry = dd.ry + 32.00 * Sin( dd.hp ) call SetUnitX( dd.attacked, CheckX( dd.rx ) ) call SetUnitY( dd.attacked, CheckY( dd.ry ) ) call GroupClear( gg_grp_TempGroup ) set bj_groupEnumOwningPlayer = dd.pl set bj_forLoopAIndexEnd = dd set bj_lastReplacedUnit = dd.attacker call GroupEnumUnitsInRange( gg_grp_TempGroup, dd.rx, dd.ry, 128.00 + 4.00 * dd.time, OnlyWavedEnemy ) call ForGroup( gg_grp_TempGroup, function Group_Frost_Wave_Actions ) set bj_lastReplacedUnit = null endif set t = null endfunction //=========================================================================== function startTrig_Frost_Wave takes nothing returns nothing local timer t = CreateTimer( ) local DamageData dd = DamageData.create( ) set dd.attacker = GetSpellAbilityUnit( ) set dd.id = GetUnitAbilityLevel( dd.attacker, 'A060' ) set dd.dmg = dd.id * 125.00 set dd.pl = GetOwningPlayer( dd.attacker ) set dd.hp = Atan2( GetSpellTargetY( ) - GetUnitY( dd.attacker ), GetSpellTargetX( ) - GetUnitX( dd.attacker ) ) set dd.rx = GetUnitX( dd.attacker ) + 32.00 * Cos( dd.hp ) set dd.ry = GetUnitY( dd.attacker ) + 32.00 * Sin( dd.hp ) set dd.attacked = CreateUnit( dd.pl, 'hdum', dd.rx, dd.ry, bj_RADTODEG * dd.hp ) set dd.fx = AddSpecialEffectTarget( "Abilities\\Spells\\Other\\WindWave\\PrismaticWave.mdx", dd.attacked, "origin" ) set dd.grp = NewGroup( ) set dd.time = 0 call SetDataBX( t, dd ) call SetUnitFlyHeight( dd.attacked, 0.00, 0.00 ) call SetUnitScale( dd.attacked, 1.25, 1.25, 1.25 ) call TimerStart( t, 0.03125, true, function Timer_Frost_Wave_Expires ) set t = null endfunction
Вот так выглядит аналог того что на твоих картинках в коде, кода минимум, да и ничего заумного нет.
Готово, помогли. Твой код тоже гляну)
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
а вообще на такие вопросы один ответ:
Отредактирован Parom_Harona
Отредактирован Raised
На 1 скрина она с здани и не двигается, а мне надо что бы она вперед двинулась
Hate: Где же ты раньше был скилов на 5к заказывали. Искали кодеров везде, никто не откликнулся, кроме одного и тот неважно сделал
Отредактирован Raised