我有一個b2PolygonShape身體,並對其施加一個力。更改旋轉中心box2d
_recbody-> ApplyForce(b2Vec2(6.0,-6.0),_recbody-> GetWorldCenter());
我想改變身體的旋轉中心,使其更多地位於身體的前方。 因此,applyForce和碰撞使身體不會在中心轉向,而在前面更多。
我有一個b2PolygonShape身體,並對其施加一個力。更改旋轉中心box2d
_recbody-> ApplyForce(b2Vec2(6.0,-6.0),_recbody-> GetWorldCenter());
我想改變身體的旋轉中心,使其更多地位於身體的前方。 因此,applyForce和碰撞使身體不會在中心轉向,而在前面更多。
在this forum 發現這個「身體的質心將會從bodyDef.position.Set()設置)座標,無論在哪裏創建實際的形狀。如果偏移boxDef.SetAsBox(座標按照所需的金額,這應該得到你以後的效果。「
我知道這是一個相當老的帖子,但是從第一個答案開始,而不是使用SetAsBox(),你應該使用Set和定義盒子的頂點。我發現SetAtBox使用寬度和高度從中心向所有4邊創建,因此無論您做什麼,重心都將成爲形狀的中心,但另一方面,如果使用Set,即使你只是畫一個盒子,你可以把它限制在一邊。
例如:
int32 count = 4;
b2Vec2 vertices[] = {b2Vec2(sprite.contentSize.width/PTM_RATIO, 0.0f/PTM_RATIO),
b2Vec2(0.0f/PTM_RATIO,0.0f/PTM_RATIO),
b2Vec2(0.0f/PTM_RATIO, -sprite.contentSize.height/PTM_RATIO),
b2Vec2(sprite.contentSize.width/PTM_RATIO, -sprite.contentSize.height/PTM_RATIO),
};
spriteShape.Set(vertices,count);
這將使形狀重心向左上角移,因爲我們只畫多邊形右側下降(沒有過去[0,0 ]點)。
定義了2d對象的「前」...因爲在我看來,它是平坦的,所以只有左,右,上和下。此外,這是什麼語言? – Joe 2011-02-13 11:18:53