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

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

Закрытая тема
 
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Невесомость
Какую формулу движения нужно написать, чтобы симитировать поведение невесомости? Юнит должен двигаться несмотря на свою точку поворота, и может сопротивляться, но с инерцией.
Каждые 0.05 сек нужно двигать юнита относительно той точки где он был 1 секунду назад и находится сейчас допустим... А вот формулу сообразить немогу =/
call SetUnitX(u,GetUnitX(u)+???)
call SetUnitY(u,GetUnitY(u)+???)
Старый 22.11.2010, 11:16
ShamaN26

offline
Опыт: 9,546
Активность:
call MoveLocation(p, GetLocationX(p) + 20 * CosBJ(a), GetLocationY(p) + 20 * SinBJ(a))
move u, p
вродь так можно =) где а растояние между р1 и р2 где р1= позиция твоего юнита а р2 то куда двигаеш
Старый 22.11.2010, 11:22
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Точку p2 (куда двигать) мне и нужно рассчитывать, она не известна вначале и не будет постоянной.
и функция MoveLocation не подходит, потому что юнит не сможет ходить если его двигать не через SetUnitX/Y
Старый 22.11.2010, 11:36
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
потому что юнит не сможет ходить если его двигать не через SetUnitX/Y
Ложь. SetUnitPosition (unit, x, y) очень даже.
В состоянии невесомости ты будешь двигаться в любом направлении, пока не упрешься в препятствие, когда ты упираешься в препятствие, то происходит практически абсолютно упругий удар, так что тебе подойдет:
call SetUnitX(u,GetUnitX(u)+20*Cos(angle))
call SetUnitY(u,GetUnitY(u)+20*Sin(angle))
Старый 22.11.2010, 12:07
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Согласен, но нужно чтобы, юнит если будет бежать против угла angle, то нужно затухание скорости и через какойто промежуток времени он остановится и будет перемещяться уже в сторону угла поворота юнита. (Как скольжение на льду, инерция) Нужно поидее менять циферку 20
Старый 22.11.2010, 13:09
agentex

offline
Опыт: 34,834
Активность:
ну нужно ввести доп переменную - угол движения. А в таймере движения задать условие если скорость <=10 к примеру, устанавливать эту переменную равной повороту юнита. Таким образом пока юнит не остановится он будет двигатся в сторону, куда был повернут в начале движения.
Старый 22.11.2010, 14:47
Закрытая тема

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

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

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

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



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