Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] Конвертация поворота радиан физ. объекта в градусы MovieClip (http://www.flasher.ru/forum/showthread.php?t=139754)

Denis_ex 10.05.2010 18:39

Конвертация поворота радиан физ. объекта в градусы MovieClip
 
Использую физ. двиг Box2D, для обновления позиции и вращения клипа использую сл. код:

Код:

this.x = body.GetPosition().x * 30.0;
this.y = body.GetPosition().y * 30.0;
this.rotation = body.GetAngle() * 180 / Math.PI; // - здесь берем угол поворота физ обекта (body.GetAngle()) в радианах и переводим в градусы.

С позицией все ок, а вот с вращением проблема: при длительном вращении, как только body.GetAngle() выдает значение примерно больше 650, то клип прекращает вращаться.

Подскажите как это исправить, чтобы вращение было бесконечно.

Zebestov 10.05.2010 18:51

ну в самом общем случае поворот чего-либо на угол больше 360° визуально эквивалентен повороту на остаток от деления этого угла на 360. используй
Код AS3:

(body.GetAngle() * 180 / Math.PI) % 360

должно работать. я просто не рублю в Box2D =)

Denis_ex 10.05.2010 18:58

Иначе говоря, когда у нас физ объект повернут на ~650 радиан, далее конвертируем это число в градусы и присваиваем movieclip.rotation = 650 * (180/ Math.PI), то муви клип больше не вращается.

Добавлено через 12 минут
Цитата:

Сообщение от Zebestov (Сообщение 907197)
используй
Код AS3:

(body.GetAngle() * 180 / Math.PI) % 360

должно работать. я просто не рублю в Box2D =)

- спасибо вроде работает. Что удивительно я видел один и тот же код в разных туторах (кот. из разных источников), и ни где не указано % 360...а ведь это может привести к серьезным багам при динамических вращающихся соединениях, что у меня и произошло, когда оставил уровень проигрываться пять минут.

Zebestov 10.05.2010 19:19

Цитата:

один и тот же код в разных туторах (кот. из разных источников)
копипаст рулит, мы это еще в школе запасли ;)

Denis_ex 10.05.2010 19:47

Спасибо).


Часовой пояс GMT +4, время: 20:09.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.