![]() |
Поворот по короткой дуге
Всех с Новым Годом!
Столкнулся с проблемой при повороте объекта. При нажатии кнопки влево, вверх, вправо или вниз, объект должен повернуться по короткой дуге. Т.е., если нажата клавиша влево, то целевой угол (targetAngle) равен -90 градусов и объект (body), повёрнутый на 80 градусов должен повернуться против часовой стрелки на угол currentAngle. У меня есть метод для поворота объекта: currentAngle - угол, на который будем поворачивать объект. targetAngle - угол, к которому будем стремиться (0, 90, -90, 180). body - тело, которое будем поворачивать. Код AS3:
|
Что-то Вы сами все себе усложнили, плюс описали в примере значения всех переменных кроме той, которая у Вас вызывает вопрос.
Попробуйте пересмотреть проблему. P.S. И кстати, почему переменная, означающая "угол, на который будем поворачивать объект", называется currentAngle? Вы точно не запутались? :) |
Задам вопрос по-другому:
Как сделать, чтобы в событии ENTER_FRAME объект поворачивался в нужную сторону через меньший угол? Н-р: если объект повёрнут на 100гр. как сделать, чтобы при нажатии кнопки "влево", он начал поворачиваться по часовой стрелке, пока не достигнет угла -90гр., а при нажатии кнопки вверх - против часовой, пока не достигнет угла 0гр. |
Надо привести оба угла (в градусах) в диапазон значений 0..360, вычесть из второго первый, снова привести результат в диапазон 0..360, и потом если результат меньше или равен 180, то крутить в одну сторону, если больше - в другую.
|
VVall, big thanks.
Вот рабочий метод, может кому пригодиться ) Код AS3:
|
| Часовой пояс GMT +4, время: 14:30. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.