Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.05.2010, 18:39
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 1  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
По умолчанию Конвертация поворота радиан физ. объекта в градусы 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, то клип прекращает вращаться.

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

Старый 10.05.2010, 18:51
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
ну в самом общем случае поворот чего-либо на угол больше 360° визуально эквивалентен повороту на остаток от деления этого угла на 360. используй
Код AS3:
(body.GetAngle() * 180 / Math.PI) % 360
должно работать. я просто не рублю в Box2D =)
__________________
Поймай яблоко 2!

Старый 10.05.2010, 18:58
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 3  
Ответить с цитированием
Denis_ex

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

Добавлено через 12 минут
Цитата:
Сообщение от Zebestov Посмотреть сообщение
используй
Код AS3:
(body.GetAngle() * 180 / Math.PI) % 360
должно работать. я просто не рублю в Box2D =)
- спасибо вроде работает. Что удивительно я видел один и тот же код в разных туторах (кот. из разных источников), и ни где не указано % 360...а ведь это может привести к серьезным багам при динамических вращающихся соединениях, что у меня и произошло, когда оставил уровень проигрываться пять минут.


Последний раз редактировалось Denis_ex; 11.05.2010 в 18:02.
Старый 10.05.2010, 19:19
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Цитата:
один и тот же код в разных туторах (кот. из разных источников)
копипаст рулит, мы это еще в школе запасли
__________________
Поймай яблоко 2!

Старый 10.05.2010, 19:47
Denis_ex вне форума Посмотреть профиль Отправить личное сообщение для Denis_ex Найти все сообщения от Denis_ex
  № 5  
Ответить с цитированием
Denis_ex

Регистрация: Aug 2009
Сообщений: 134
Спасибо).

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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