@kandyor

Three.js :: вращение юнита к заданному углу поворота?

Здравствуйте, господа.

Собственно сабж. Обрабатываю поворот юнита. Стандартный метод .angleTo() в three.js возвращвет скорее какую-то длинну, нежели угол, при чем это число зависело скорее не от угла, а от длинны растояния от точки к юниту, поэтому пошел по школьной программе - теореме косинусов, чтобы его высчитать. Вроде бы и работает более-менее, но реально правильный угол получается вывести ближе к 0, 90 и 180 градусов (для простоты работаю по модулю 180 градусов). Для наглядности - вывожу стороны треугольника. В промежутках - появляются артефакты, при которых юнит смотрит куда-то в середину катета, при чем есть некая зависимость: эта середина ближе к нулю если угол меньше 45 и ближе к 90 если больше. Собственно это попытался показать на скринах (пардон за беспорядок).

835c017308204a79a790500dc0852d32.png525ebdf2c0554ef7acb888bbaf423384.png19299ef2cc3a4f3cac6d7d5984567a16.png1048d7b7487543e79431cb5738819a51.pngbac694968c9f4577bbf13a5d9718bb8f.png

По формуле узнаю косинус, который в промежутке от 0 до 1, далее вычитаю один прямой угол, так как он и так явно известен, и оставшиеся 90 умножаю на значение косинуса, таким образом к примеру с косинусом 0.5 угол выводится 90*0.5=45.

Возможно я что-то не так делаю, и из-за этого получается сей косяк. Кто что подскажет? Спасибо заранее.

UPD: я знаю про радианы, в градусы перевожу просто для удобства при расчетах.
  • Вопрос задан
  • 714 просмотров
Пригласить эксперта
Ответы на вопрос 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
В документации написано, что angleTo возвращает угол в радианах. Если хотите, радианы в градусы можете перевести с помощью Math.radToDeg.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы