Добавлен awesomesk1ll
Вопрос на тему "Как устроено передвижение юнитов в Warcraft 3"
Ситуация:
Имеется юнит (например, Пехотинец).
Имеется юнит (например, Пехотинец).
Вопрос:
Если отдать приказ идти в точку в 600 единицах позади пехотинца, как будет реализовано движение данного юнита?
Как долго он будет стоять на месте? Как и когда он будет разворачиваться, в нужном для передвижения, направлении?
Если отдать приказ идти в точку в 600 единицах позади пехотинца, как будет реализовано движение данного юнита?
Как долго он будет стоять на месте? Как и когда он будет разворачиваться, в нужном для передвижения, направлении?
Принятый ответ
Не помню за варкрафт, но я делал передвижение аналогичное доте 2, и, вроде как, они там совпадают.
Юнит поворачивается все время с одинаковой скоростью (скорость поворота). Если юнит отвернут, то он сразу начинает поворот, чтобы следовать в указанную точку.
Юнит начинает сразу следовать в указанную точку. Однако минимальный угол (угол между векторами - направление движения и текущий взгляд персонажа) влияет на скорость передвижения. Когда персонаж полностью отвернут от точки его скорость равна 0 (либо очень низкому значению), так как коэффициент поворота равен 0 (либо очень низкому значению). Когда персонаж повернут к точке его скорость полная. так как умножаемый коэффициент равен 1.
Таким образом персонаж и поворачивается и передвигается одновременно. Однако чем сильнее он повернут к указанной точке, тем ближе скорость к нормальной.
Юнит начинает сразу следовать в указанную точку. Однако минимальный угол (угол между векторами - направление движения и текущий взгляд персонажа) влияет на скорость передвижения. Когда персонаж полностью отвернут от точки его скорость равна 0 (либо очень низкому значению), так как коэффициент поворота равен 0 (либо очень низкому значению). Когда персонаж повернут к точке его скорость полная. так как умножаемый коэффициент равен 1.
Таким образом персонаж и поворачивается и передвигается одновременно. Однако чем сильнее он повернут к указанной точке, тем ближе скорость к нормальной.
пригодится - функция минимального угла, возвращающего угол от 0 до PI
public static float Angle(Vector2 from, Vector2 to)
{
return Acos(Clamp(Dot(from.normalized, to.normalized), -1f, 1f));
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. Devion
Юнит начинает сразу следовать в указанную точку. Однако минимальный угол (угол между векторами - направление движения и текущий взгляд персонажа) влияет на скорость передвижения. Когда персонаж полностью отвернут от точки его скорость равна 0 (либо очень низкому значению), так как коэффициент поворота равен 0 (либо очень низкому значению). Когда персонаж повернут к точке его скорость полная. так как умножаемый коэффициент равен 1.
Таким образом персонаж и поворачивается и передвигается одновременно. Однако чем сильнее он повернут к указанной точке, тем ближе скорость к нормальной.