我将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有一个简单的内置方法来执行必要的转换,但我还没有能够找到它。正确定位精灵的最佳方法是什么?
答案 0 :(得分:0)
尝试在更新刻度函数中相对于身体中心旋转精灵。
答案 1 :(得分:0)
我终于找到了我正在寻找的转换功能。
b2Vec2 ptWorld =body->GetWorldPoint(shape->m_centroid);
将相对于身体原点测量的夹具形状坐标转换为世界坐标。从米转换为像素后,ptWorld的x和y坐标可用于设置精灵的位置。