Box2d - actioncript, java, andengine - положение тела - PullRequest
1 голос
/ 03 августа 2011

Я потерял тонны информации для box2d и его портов. Но у меня очень простой вопрос, по которому я нигде не могу получить никакой информации.

Как правильно рассчитать положение тела. Допустим, у меня есть спрайт на экране в позиции (10, 20). Почему каждый учебник для box2d вычислений отличается?

Например: - обработка (из processing.org) с использованием функцииordinPixelToWorld иordinWorldToPixel для расчета между миром и экраном между ними - что является немного скомпилированной функцией; - у andengine есть аналогичная функция для конвертации между миром и экраном; - actionscript - здесь я не понимаю почему, но в каждом уроке есть получение экранных координат и деление их на функцию масштабирования.

Я задаю этот вопрос, потому что все вышеперечисленное имеет одну общую точку: координаты экрана для 0,0 находятся в левом верхнем углу. Box2d написано по-разному для каждого порта?

Буду благодарен за объяснение.

Обновление

У меня не очень большие проблемы с box2d actionscript. Моя проблема: почему, когда я устанавливаю положение тела (0, 0), оно отображается в левом верхнем углу окна короткими словами. В любых других портах box2d (обработка, jbox2d, расширение box2d andengine), если я установил положение тела (0, 0), он отображается в центре окна. Я знаю правила про пиксель на метр и т. Д.

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Причина изменения заключается в том, что Box2D во всех своих формах использует метры в качестве своей единицы измерения. Причина этого заключается в том, что он предназначен для моделирования объектов реального мира.

Box2D вообще не нуждается в визуальном представлении. Когда вы создаете симуляцию box2D, уровень детализации, который должен показать разработчик в графическом рендере box2D, зависит от разработчика. Так что будет множитель, представляющий преобразование метров в пиксели. В случае вспышки Box2D по умолчанию это соотношение составляет 30px: 1m.

Таким образом, причина того, что у каждого итога есть функция конвертации, заключается в том, что Box2D использует метры, а компьютер отображает пиксели.

Преобразует метры в пиксели, а пиксели в метры.

0 голосов
/ 03 августа 2011

В ActionScript центр объекта DisplayObject обычно находится в верхнем левом углу, но центр тел Box2D совпадает с барицентрическим центром (фактическая середина фигуры, а не верхний левый угол).Также единицы измерения Box2D не являются точными пикселями, но вы можете легко конвертировать их между собой.

Я рекомендую взглянуть на Руководство по Box2DFlash , особенно на Units и UserData .В идеале вы хотели бы прочитать всю инструкцию, чтобы лучше разобраться в Box2D, что даст вам гораздо больше контроля.

Если вы не заинтересованы в мельчайших деталях, тогда попробуйте World Construction Kit.,Это должно упростить настройку миров Box2D.

Box2D WCK

...