Позиционирование спрайтов при использовании нескольких приборов на корпус - PullRequest
0 голосов
/ 15 марта 2012

Я использую Cocos2D с Box2D и перехожу от тел с одним прибором к телам с несколькими приборами, каждый с соответствующим спрайтом. Используя

body->GetTranform().p.x + shape->m_centroid.x
body->GetTranform().p.y + shape->m_centroid.y
body->GetTransform().q.GetAngle()

Я могу правильно расположить спрайтов, пока тело не будет повернуто. В этот момент все идет не так, как каждый спрайт вращается относительно своих братьев и сестер, а вся группа разворачивается вокруг того, что я считаю (0, 0) точкой привязки тела.

Я предполагаю, что Cocos2D / Box2D имеет простой встроенный метод для выполнения необходимого преобразования, но я не смог найти его документированным. Как лучше всего расположить мои спрайты правильно?

Ответы [ 2 ]

0 голосов
/ 16 марта 2012

Я наконец нашел нужную функцию преобразования.

b2Vec2 ptWorld =body->GetWorldPoint(shape->m_centroid);

преобразует координаты формы прибора, измеренные относительно происхождения тела, в мировые координаты. После преобразования из метров в пиксели координаты x и y ptWorld можно использовать для определения местоположения спрайта.

0 голосов
/ 15 марта 2012

Попробуйте вращать спрайты относительно центра тела в функции обновления.

...