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

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

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

offline
Опыт: 7,009
Активность:
Производительность такого движения.
Собственно вот, движение по 3 осям, с притяжением к земле

Код:
globals
    location Lz = Location(0,0)
    
    unit array Mu = null
    
    integer lpEnd = 0
    integer lp    = 0
    
    real array x1 = 0
    real array y1 = 0
    real array z1 = 0
    
    real array x2 = 0
    real array y2 = 0
    real array z2 = 0
endglobals

function Mu takes nothing returns nothing
    set lp = 0
    
    loop 
    exitwhen lp > lpEnd
    set x1[lp] = x1[lp] + x2[lp]
    set y1[lp] = y1[lp] + y2[lp]    
    set z1[lp] = z1[lp] + z2[lp]
    
    call SetUnitX(Mu[lp],x1[lp])
    call SetUnitY(Mu[lp],y1[lp])  
    call MoveLocation(Lz,x1[lp],y1[lp])
    call SetUnitFlyHeight(Mu[lp], z1[lp]-GetLocationZ(Lz), 8192)
    set z2[lp] = z2[lp] - 0.098

    set lp = lp + 1
    endloop
endfunction

function play takes nothing returns nothing
    call TimerStart (CreateTimer(),.05,true,function Mu)
endfunction


x1,y1,z1 - начальные координаты снаряда.

x2,y2,z2 - перемещение снаряда. высчитывает только один раз при создания снаряда с помощью полярок.

Вот вопросс... есть ли система быстрей ? (хотя тестил, 200 снарядов было и норм, не тормозило)
Старый 17.08.2009, 00:47
J
expert
offline
Опыт: 48,447
Активность:
нету
Старый 17.08.2009, 00:57
ZeToX2007

offline
Опыт: 7,009
Активность:
J, А лучше делать событие

TriggerRegisterTimerEvent(trig, timeout, true)

или таймер ?
Старый 17.08.2009, 01:02
J
expert
offline
Опыт: 48,447
Активность:
разницы в скорости не будет, но лучше делать таймер потому что его удалять легче, да и спецально он создан для подобных задач
Старый 17.08.2009, 01:04
ZeToX2007

offline
Опыт: 7,009
Активность:
было бы выстрей если бы TriggerSleepAction работал нормально.. + ещё цыкл... а тему можно закрыть
Старый 17.08.2009, 01:27
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
У цикла есть предел по количеству операций. Функция, подвешенная к таймеру, может выполняться сколь угодно долго (без учета прочих условий).
Да и не будет TriggerSleepAction работать нормально, даже если сильно захотеть.
Старый 17.08.2009, 10:51
Закрытая тема

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

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

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

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



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