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

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

Закрытая тема
 
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Проверка, можно ли двигать дальше
Вообщем, у меня реализовано периодическое триггерное передвижение юнита, примерно вот так:
Код:
local unit u = <воин>
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real a = <угол>
local real speed = <сдвиг>
local real newX = x + speed * Cos(a * bj_DEGTORAD)
local real newY = y + speed * Sin(a * bj_DEGTORAD)
call SetUnitX(u,newX)
call SetUnitY(u,newY)
if <условие> then
...
endif

и вот где написано <условие> нужно сделать проверку, нет ли у воина на пути какого-либо препятствия(воин, декорация, и т.д.)
Подскажите как лучше сделать
Старый 08.05.2008, 23:39
adic3x

offline
Опыт: 108,439
Активность:
вообще движение реализованно не совсем верно

1) проверять тип карты путей (есть соседняя тема в этом разделе, про тип проходимости, надеюсь найдешь, если нет - пиши) (собстно не всегда надо)
2) пикать юнитов в радиусе и через базу данных сверять их размеры
3) пикать деструбы и проверять их размеры (тоже писалось в соседнем топике под названием "вопрос")
4) проверять высоту рельефа (ну это при 3д движении)

так же рекомендую посмотреть:
http://xgm.guru/forum/showthread.php?t=15889
Старый 09.05.2008, 10:24
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Цитата:
вообще движение реализованно не совсем верно

я показал только примерно ту часть кода, где нужно поставить проверку. Насчет правильности своего движения я уверен на 100%.
vJass компилятора у меня нету(ставил - NewGenPack - не пашет), так что проверить твой спелл не смог.
Значит только через пик всех вокруг? ну значит сделаю так...
Старый 09.05.2008, 13:18
adic3x

offline
Опыт: 108,439
Активность:
впринципе мой пример вполне реально переделать на неГенПак)
Цитата:
я показал только примерно ту часть кода, где нужно поставить проверку

ну я и говорю что она не совсем правильна (т.е. она 2д, не учитывает рельеф и т.д.)
Старый 09.05.2008, 13:36
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
ADOLF, так у меня движение только 2д, т.е. в определенный момент времени(не буду говорить идею) юнит начинает движение в определенном направлении, и двигается он по ровной местности(без возвышенностей и впадин), но должен остановиться при столкновении с другим юнитом/декорацией

Я уже почти реализовал это
Старый 09.05.2008, 14:22
Void

offline
Опыт: 1,632
Активность:
1: Есть один вариант столкновения об стены, он реализован в Moving System(система переиодического движения снарядов на GUI).
2: карты сохраненные на vJass можно загрузить на обычном редакторе, но без сохранения т.к. карта уже скомпилирована на vJass компиляторе и готова к запуску.
Старый 09.05.2008, 19:37
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Void, Свою систему я уже реализовал))
Все равно я vJass не понимаю, лучше обойтись без этих наворотов высокого уровня и сделать все по-своему через параллельные массивы, я даже кэшем почти никогда не пользуюсь.

Отредактировано Alex_Hell, 10.05.2008 в 12:28.
Старый 09.05.2008, 21:35
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
без этих наворотов высокого уровня и сделать все по-своему через параллельные массивы

ммм, кста вЖасс єто не только хай левел (я его тоже ненавижу и про паралельные массивы тру, но там фича с обьявленим переменных - мего)
Старый 10.05.2008, 09:58
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
ADOLF, это ты о том, что в любом месте можно глобалки объявлять? про это я знаю, но приходится обходится обычным способом...

Не хочется создавать новой темы, поэтому задам вопрос сдесь:
Вот я сделал движение юнита-снаряда по таймеру( с периодном в 0.04), вроде бы все правильно, но вот одна проблемка: сам юнит-снаряд движется к цели, а его модель стоит на месте, где он появился...Пробовал проверять не стоит ли он - нет - X/Y меняются...Почему тогда модель стоит на месте?
Старый 10.05.2008, 12:27
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Alex_Hell думаю это просто глюк, либо: ты как его заставляеш двигаться? ..мм может для данной анимки снаряда надо период побольше, а то он просто прорисовываться не успевает, ведь 0.04 это 25 раз в секунду, хотя в идеале должно быть всё нормально
Старый 10.05.2008, 12:33
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Цитата:
Сообщение от happy_horror
может для данной анимки снаряда надо период побольше, а то он просто прорисовываться не успевает

наврят ли...я пробовал поставить период таймера на 0.1 и все равно, и модели другие ставил. Не понимаю. Может у снаряда нужно какие-то параметры в редакторе объектов ставить особые, а какие то нельзя?

Alex_Hell добавил:
Все я понял! У меня стояла скорость движения = 0...
Надо было хоть скока-то скорости дать.
Вот терь можно закрывать.
Старый 10.05.2008, 13:03
Vadim

offline
Опыт: 603
Активность:
Функцией SetUnitPosition(unit, x, y) можно двигать юнитов у которых скорость 0.
Старый 10.05.2008, 15:43
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Цитата:
Сообщение от Vadim
Функцией SetUnitPosition(unit, x, y) можно двигать юнитов у которых скорость 0.


+1, даже если у юнита скорость анимации бега и шага стоит 0...тестил только что
Старый 10.05.2008, 15:52
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Проблема решена. Закрыто.
Старый 10.05.2008, 15:54
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
SetUnitPosition(unit, x, y)

вообще желательно использовать именно сет юнит Х/У
Цитата:
0.04

ну самое тру - .025 (если у вас все правильно написанно лагов не будет)
Старый 10.05.2008, 19:34
Закрытая тема

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

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

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

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



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