XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
IceType

offline
Опыт: 403
Активность:
Плавное движение
Объясните как можно реализовать более плавное движение юнита!
В моем коде юнит двигается как-бы рывками..
function Trig_Move_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetAttacker()) == 'Hmkg' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Move_Actions takes nothing returns nothing
    local unit u1
    local unit u2
    local location p1
    local location p2
    local real a
    set u1=GetAttackedUnitBJ()
    set u2 = GetAttacker()
    set p1 = GetUnitLoc(u1)
    set p2 = GetUnitLoc(u2)
    set a = AngleBetweenPoints(p2, p1)
    // Начало Движения
    call MoveLocation(p1, GetLocationX(p1) + 50 * CosBJ(a), GetLocationY(p1) + 50 * SinBJ(a))
    call SetUnitPositionLoc( u1, p1)
    call PolledWait( 0.05 )
    call MoveLocation(p1, GetLocationX(p1) + 50 * CosBJ(a), GetLocationY(p1) + 50 * SinBJ(a))
    call SetUnitPositionLoc( u1, p1)
    call PolledWait( 0.05 )
    call MoveLocation(p1, GetLocationX(p1) + 50 * CosBJ(a), GetLocationY(p1) + 50 * SinBJ(a))
    call SetUnitPositionLoc( u1, p1)
    call PolledWait( 0.05 )
    call MoveLocation(p1, GetLocationX(p1) + 50 * CosBJ(a), GetLocationY(p1) + 50 * SinBJ(a))
    call SetUnitPositionLoc( u1, p1)
    call PolledWait( 0.05 )
    call MoveLocation(p1, GetLocationX(p1) + 50 * CosBJ(a), GetLocationY(p1) + 50 * SinBJ(a))
    call SetUnitPositionLoc( u1, p1)
endfunction

//===========================================================================
function InitTrig_Move takes nothing returns nothing
    set gg_trg_Move = CreateTrigger(  )
    call DisableTrigger( gg_trg_Move )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Move, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( gg_trg_Move, Condition( function Trig_Move_Conditions ) )
    call TriggerAddAction( gg_trg_Move, function Trig_Move_Actions )
endfunction

Отредактировано ShadoW DaemoN, 13.11.2009 в 18:34.
Старый 13.11.2009, 18:21
Doc

offline
Опыт: 63,163
Активность:
  1. Никогда не используй полледвэйт
2.для таких действий используется таймер или периодический триггер а крайнем случае
3.для одинаковых действий используется цикл
DoctorGester добавил:
  1. Никогда не используй полледвэйт
2.для таких действий используется таймер или периодический триггер а крайнем случае
3.для одинаковых действий используется цикл
Старый 13.11.2009, 18:32
IceType

offline
Опыт: 403
Активность:
Если можно покажите как можно это сделать..
Старый 13.11.2009, 18:46
agentex

offline
Опыт: 34,834
Активность:
оптимальная плавность достигается при периоде 0.025 - это все что могу сказать. инфу по этому вопросу можно найти в поиске.
agentex добавил:
в первом посте вобще чтото жуткое написано..
Старый 13.11.2009, 18:52
IceType

offline
Опыт: 403
Активность:
Понятно! Спасибо!
Старый 13.11.2009, 19:02
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Таймер движения 0.025
Двигать маленькими движениями
Старый 13.11.2009, 19:07
ScorpioT1000
Работаем
offline
Опыт: отключен
0.04
Старый 13.11.2009, 23:31
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:29.