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

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

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

offline
Опыт: 1,177
Активность:
Скольжение героя
как зделать чтоб герой ездил по льду как в поляре?
Старый 22.08.2008, 17:44
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Создать регион где надо и создать два триггера.
1 С событием Боевая единица - A unit Enters Region (регион),Занести юнита в переменную.
2 С событием Время - Every 0.05 seconds of game time.
Первым триггером включать второй,а вторым плавно двигать юнита из переменной.
Старый 22.08.2008, 18:08
agentex

offline
Опыт: 34,834
Активность:
кстати я ворошил 3 - 4 поляр и с ужасом пришел к выводу что движение там делалось на ГУИ...
кстати если делать на жассе все равно не обойтись без лагов) (при 5 + игроках)
Старый 22.08.2008, 18:19
agentex

offline
Опыт: 34,834
Активность:
каждые 0.01 сек по таймеру\ периодик двигаешь точку каждого игрока спец функцией, ну и SetUnitLoc

agentex добавил:
Dragon Knight не я имею ввиду что просто изза одновременно работающих периодических триггеров возникают тормоза
Старый 22.08.2008, 18:59
ScorpioT1000
Работаем
online
Опыт: отключен
Цитата:
кстати если делать на жассе все равно не обойтись без лагов) (при 5 + игроках)

если SetUnitX / Y то норм )

ScorpioT1000 добавил:
но оно не учитывает преграды -_- для этого есть ф-ция проверки их
Старый 22.08.2008, 19:14
agentex

offline
Опыт: 34,834
Активность:
не там преград нету ты че) там проверка ток на терайн под гером
ZONE короче вот
Код:
function PolarMove takes location l, real dist, real angle returns location
call MoveLocation(l, GetLocationX(l) + dist * CosBJ(angle), GetLocationY(l) + dist * SinBJ(angle))
return l
endfunction

этой функцией двигаешь точку каждого плеера, т.е.
Код:
call PolarMove(udg_points[index], 10, GetUnitFacing(udg_hero[index]))

это пример естесно

agentex добавил:
ну может и не 10, там уже по случаю настраивать надо)

agentex добавил:
и прикол весь в том что точки не создаются новые, а просто перемещаются одни и те же, поэтому утечек не возникнет

agentex добавил:
хз я сам эту ф-ю не юзал при скольжении (просто не знал ее тада), а при 11 триггерах каждые по 0.01 сек понятно что лаги были :/
Старый 22.08.2008, 19:23
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Должен понять.
Прикрепленные файлы
Тип файла: w3m Ice.w3m (14.0 Кбайт, 112 просмотров )
Старый 22.08.2008, 19:31
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
agentex, выбивает ошибку "отсутствует название" в call PolarMove(udg_points[index], 10, GetUnitFacing(udg_hero[index])) , в чем ты ошибся или что я не подставил?

Vampirrr добавил:
Dragon Knight, на поляр не очень то похоже, но мне понравилась идея))
Старый 22.08.2008, 20:00
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
agentex, я понимаю что пример, но даже примеры рабочими обычно выкладывают..Тут тем более проблема в функции call, я не смог понять, название чего там отсутсвует..
Старый 22.08.2008, 20:27
silumin

offline
Опыт: 11,153
Активность:
Кстати необязательно 0.01, не такое совершенное зрение у человека. Не помню точно с каким периудом я делал триггер, но вроде бы до сотых долей не доходило.
Старый 22.08.2008, 20:48
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
silumin, а вот у меня до сотых секунд доходило. Около 0.05 сек
Старый 22.08.2008, 21:06
agentex

offline
Опыт: 34,834
Активность:
silumin при чем тут зрение.. поставишь 0.1 герой будет дергаться
Vampirrr ппц.. call это вощет оператор вызова
Код:
function PolarMove takes location l, real dist, real angle returns location
call MoveLocation(l, GetLocationX(l) + dist * CosBJ(angle), GetLocationY(l) + dist * SinBJ(angle))
return l
endfunction

код этой функции копируешь в custom script карты а потом где нужно вызываешь ее
call PolarMove(l, dist, angle) где l -точка dist - расстояние angle - угол
после этого точка l переместится на dist под углом angle
Старый 22.08.2008, 21:21
Strayiker
Warcraft Forever
offline
Опыт: 3,406
Активность:
Зачем дергать точку, когда проще делать через координаты ?
SetUnitX()/SetUnitY() отлично подойдёт для этих целей.
Старый 22.08.2008, 22:26
agentex

offline
Опыт: 34,834
Активность:
нет Strayiker не подойдет ты очевидно не играл в поляры какие наф координаты? и откуда ты будешь брать Х У , все равно в конечном итоге через синус и косинус. а тут это одной ф-ей и очень удобно, не надо обнулять точки
Старый 22.08.2008, 23:06
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
agentex, та е мое, ну что ты тормозишь? я не дурак, я знаю что это оператор вызова и как и куда его вставлять! ты сам карту создай и засунь туда все, что ты написал и посмотри. если не будет ошибок появляться, то скрин делай и сюда выкладывай, что б я понял что не так. а то что я call функцией назвал, то можно было и не умничать, ты можно подумать не ошибаешься.
Старый 22.08.2008, 23:44
agentex

offline
Опыт: 34,834
Активность:
вот те мапа - пример с 3 тригерами и 2 функциями (о_О) вприницпе можно называть это системой скольжения недоработанной)
Прикрепленные файлы
Тип файла: w3x SlideExample.w3x (21.0 Кбайт, 79 просмотров )
Старый 23.08.2008, 00:09
ScorpioT1000
Работаем
online
Опыт: отключен
Цитата:
function PolarMove takes location l, real dist, real angle returns location
call MoveLocation(l, GetLocationX(l) + dist * CosBJ(angle), GetLocationY(l) + dist * SinBJ(angle))
return l
endfunction

угу 2 утечки + ненужные тормоза
Старый 23.08.2008, 07:51
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
кстати если делать на жассе все равно не обойтись без лагов) (при 5 + игроках)

ложь, если делать на жассе кривііми руками то да, но мі єтот вариант не расматриваем, никаких лагов от движения 5 юнитов не будет (гм, при хорошей заточки на моем древнем железе не лагало движение 50 юнитов с периодом .025)

Цитата:
каждые 0.01 сек

таков фпс вам не нужен... .025 минимум, если делаете на гуи ставьте .035, вы разницы не увидете

неужели это так сложно? частота обновления моника не всегда сто герц, зачем тогда делать стогерцовое движение хз

ADOLF добавил:
Цитата:
function PolarMove takes location l, real dist, real angle returns location
call MoveLocation(l, GetLocationX(l) + dist * CosBJ(angle), GetLocationY(l) + dist * SinBJ(angle))
return l
endfunction


Цитата:
угу 2 утечки + ненужные тормоза


код неоптимален, но утечек в данном конкретном куске нету, хз че ты так решил...

Цитата:
нет Strayiker не подойдет ты очевидно не играл в поляры какие наф координаты? и откуда ты будешь брать Х У , все равно в конечном итоге через синус и косинус. а тут это одной ф-ей и очень удобно, не надо обнулять точки


пост вообще наполнен очень глубинным смыслом, создается впечатление что вы вообще не понимаете о чем пишите...=///

причем координаты к кос и син? кос и син вообще нужны для движения по окружности... для создания еффекта скольжения стоит вообще юзать вектор и не пратиься...

Цитата:
silumin при чем тут зрение.. поставишь 0.1 герой будет дергаться

ноу комент... ТТ
Старый 23.08.2008, 09:58
agentex

offline
Опыт: 34,834
Активность:
Цитата:
код неоптимален, но утечек в данном конкретном куске нету, хз че ты так решил...
взято строго отсюда:
http://xgm.guru/articles.php?section=wc3&name=jass_optimisations_and_leaks
Цитата:
пост вообще наполнен очень глубинным смыслом, создается впечатление что вы вообще не понимаете о чем пишите...=///

причем координаты к кос и син? кос и син вообще нужны для движения по окружности... для создания еффекта скольжения стоит вообще юзать вектор и не пратиься...

а этот пост просто переполнен смыслом да? :/
Цитата:
ноу комент... ТТ

скачай карту поставь время больше чем на 0.01 сек. и посмотри что будет
Старый 23.08.2008, 10:46
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
взято строго отсюда:
http://xgm.guru/articles.php?section=wc3&name=jass_optimisations_and_leaks

статья писалась много лет назад + ее афтор в жассе не особо то и шарит
Цитата:
скачай карту поставь время больше чем на 0.01 сек. и посмотри что будет

у меня .035 работает удовлетворительно, .025 идеально если у вас что то не так это проблемы кривых рук а не периода
Цитата:
а этот пост просто переполнен смыслом да? :/

как раз впринципе правильно более менее сказанно
Старый 23.08.2008, 11:15
Закрытая тема

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

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

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

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



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