Система координат и преобразование спрайтов - PullRequest
0 голосов
/ 25 апреля 2011

Я использую андегин для создания физического симулятора через box2d.

Тела создаются через PhysicsFactory с использованием спрайтов.

Моя идея состоит в том, чтобы процедурно расположить эти спрайты, следуя этой схеме: rotation around externalPoint

в основном один центральный спрайт, представляющий центр моих мировых координат, и серия клонированных спрайтов, которые создаются вращением базового спрайта вокруг центра myWorld ("X" внутри круга).

Я пытался использовать opengl внутри андегина (перевод, поворот, обратный перевод)

super(stamiRadious, 0, image);     //stamiDoadious is te distance from radix (world center) and "petal" attach point
this.setRotationCenter(0, 0);
this.setRotation((float) Math.toDegrees(angleRad));
this.setPosition(this.getX()+radixX, this.getY()+radixY);

но мне не удалось: результаты неверны (неправильная конечная позиция и неправильное свойство тела box2d, как будто спрайт намного больше, чем изображение)

Я полагаю, что часть проблемы основывается на моей интерпретации setRotation и setRotationCenter и в целом на моем понимании системы координат андегина + системы кординатов box2d.

Есть какие-нибудь мысли / ссылки на документ / объяснение?

1 Ответ

4 голосов
/ 25 апреля 2011

После того, как вы создали физическое представление (тело) спрайта, вы должны быть очень осторожны при изменении спрайта!Обычно вы больше не модифицируете Sprite, а вместо этого изменяете Body, вызывая

someBody.setTransform(); // Note that positions must be divided by PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT!

Надеюсь, что это помогло:)

...