Скорость юнита
Начну новую тему, пожалуй.
Вот допустим у меня юнит двигается со скоростью 5 единиц/секунду, а я ему указываю цель на расстоянии 11 единиц от него. Как остановить юнит в нужной точке ? Не строить же, в самом деле, дерево из IF-Else, проверяющих расстояние через каждую единицу ? Можно поставить скорость в зависимость от расстояния, но это изменит начальные условия задачи. |
Ответ: Скорость юнита
Мммм... Дык в чем проблема?
Перемещение изначально равно скорости юнита. Если расстояние до цели меньше чем то, которое проходит юнит за шаг (т.е. скорости юнита), то перемещение ставится равным этому расстоянию. Алгоритм допиливать напильником по желанию, до получения желаемого результата. |
Ответ: Скорость юнита
Цитата:
|
Ответ: Скорость юнита
Вроде работает...но !
Я пишу так : Код:
;move mode init movemode 1 - состояние выбора точки на земле для помещения waypoint. movemode 2 - юнит в движении. move_icon это waypoint, который остается на земле при клике, и к которому идет юнит. Когда юнит достигает цели картинка move_icon должна прятаться. Большую часть времени юнит точно достигает цели, то есть расстояние между юнитом и целью становится равно нулю. Но иногда что-то сглючивает, и movemode так и остается равным 2, хотя юнит достиг цели. А расстояние от юнита до цели при этом становится равным чему-то вроде 1.190059e-007 и тому подобное. Кстати, как бы еще заставить юнит поворачиваться к waypoint плавно, а не в один фрейм ? Я пытался сделать так : припарентил к юниту еще один пивот, pointentity его на waypoint, затем считал его entityyaw в переменную, и хотел использовать разницу между этой переменной и entityyaw самого юнита, но не тут-то было, в большинстве случаев юнит достигает цели и начинает бесконечно кружить на месте... |
Ответ: Скорость юнита
Цитата:
|
Ответ: Скорость юнита
Для тебя это было буквально вчера - а для меня десять лет назад. :-D
|
Ответ: Скорость юнита
В процессе дебага обнаружилось вот что :
-создаю два пивота, один родитель другого. -на всякий случай присваиваю им одинаковые координаты. -ни один пивот никуда не повернут, ориентация дефолтная. -делаю обоим pointentity на один и тот же объект. -проверяю у обоих пивотов глобальный EntityYaw - и они несовпадают ! Как такое может быть ? И главное - как с этим бороться ? |
Ответ: Скорость юнита
а координаты тоже глобально присваиваешь?
|
Ответ: Скорость юнита
Если один припаренчен к другому - нафига оба поворачивать ?
а углы не совпадают, потомучто ты сначала повернул ребенка, а потом родителя. |
Ответ: Скорость юнита
Кстати, karry, если дистанция между юнитом и целью меньше скорости, то просто обнули скорость и поставь юнит на цель. Тогда
Кружить точно не будет. |
Ответ: Скорость юнита
Для плавного поворота AlignToVector , но иногда получаются глюки, указываешь ехать назад, а юнит едет вперед.
Причем тоже самое получается если делать PointEntity временного пивота и плавно менять угол юнита до угла этого пивота (почти аналог AlignToVector получается). Я так думаю глюк начинается с функции EntityYaw(), которая при некоторых углах дает не верные значения. Моск сломал думая как этого избежать )) |
Ответ: Скорость юнита
Всем спасибо за участие в теме. Теперь будем разбираться...
Michael Цитата:
tormoz Цитата:
Во-вторых, первым делается pointentity чайлда, и его entityyaw сразу считывается в переменную. rr333 Хороший совет. Damp Цитата:
Цитата:
Писал так : Код:
If EntityYaw#(unit01\pivot,1)=ppv_yaw then В чем засада ? Вроде логично... |
Ответ: Скорость юнита
Черт, я-то думал что углы поворота в блице как во всех нормальных 3D приложениях, от 0 до 360, а они от 0 до 180 и до -180 !
Вот в чем загвоздка...как же определять в какую сторону юниту поворачиваться если один угол положительный а второй отрицательный ? |
Ответ: Скорость юнита
логично: угол +180, вот тебе и формат 0-360
|
Ответ: Скорость юнита
А может так выйдет глюк с entityyaw исправить:
припарентить пивот сбоку от объекта, и при определении угла определять глобально положение пивота относительно объекта. Т.е. если пивот справа - угол от 0 до 180, если слева - 180 до 360. |
Часовой пояс GMT +4, время: 15:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot