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

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

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
По умолчанию Система координат при создании шейпа тела

Подскажите пожалуйста такую вещь - по какому принципу при создании шейпа ему задаются координаты? Я при создании круглого тела задаю координаты шейпа таким образом
Код AS3:
circleShape.SetLocalPosition(new b2Vec2(0, 0));
но эти координаты оказываются не равны 0 локальной координатной системы создаваемого объекта. Это видно на прикрепленной картинке - красная точка добавлена в координаты 0, 0. В итоге координаты тел, не совпадают у меня с их изображениями. Я понимаю что вопрос скорее всего тупой, но у меня уже ни одна гипотеза не работает, а в доках объяснения этому я не нашел.

P.S. Игрушка на старлинге если что.
Миниатюры
Нажмите на изображение для увеличения
Название: box2D.png
Просмотров: 176
Размер:	728.2 Кб
ID:	29775  

Старый 12.07.2013, 11:30
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 2  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Да. чуть было не забыл отписать о решении проблемы, может кому то пригодится, а то тут на форуме на эту тему полный глушняк. В общем оказалось, что и Box2D и Nape локальные координаты преобразуют в глобальные и все расчеты ведут в них. Соответственно (0,0) локальных координат астероида, преобразовывался в глобальные координаты и в результате получалось такое вот смещение из за верхней панельки (почему честно говоря немного не понимаю, все таки при преобразовании координаты должны быть идентичны и так всегда и было ??). Сначала я решил эту проблему такой вот поправкой
Код AS3:
circleShape.SetLocalPosition(new b2Vec2(radius / Level.worldScale, (radius + 135) / Level.worldScale)); //135 высота панели свеху
однако обнаружил что при таком раскладе, бокс2Д воспринимает объект как увеличившийся на 135 пикс., и при приобретении вращательного момента астероиды начинали крутиться по орбите вокруг точки.
В итоге локальную позицию я задал так:
Код AS3:
circleShape.SetLocalPosition(new b2Vec2(radius / Level.worldScale, radius / Level.worldScale));
а в апдейте я вношу такую поправку:
Код AS3:
override public function update():void
		{
			x = body.GetPosition().x * Level.worldScale;
			y = body.GetPosition().y * Level.worldScale - 145; //поправка на высоту панели + полоска жизни
			inner.rotation = body.GetAngle();
 
 
		}
Возможно это очень кривой подход, и возможно он еще вылезет каким нибудь косяком, но пока визуально все работает четко.

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

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

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


 


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


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