如何在Box2d中将多个凸多边形设置为一个形状?

时间:2012-06-18 15:13:32

标签: objective-c ios cocos2d-iphone box2d

我是Box2d的新手,我刚刚了解到它不支持凹多边形。我已阅读以解决这个问题,我应该使用2个(或更多)凸多边形并将它们应用到相同的形状。

不幸的是,我已经找了一个例子来说明如何做到这一点,但是找不到一个有效的例子。继承我的代码:

b2PolygonShape spriteShape;    
int num = 6;
        b2Vec2 verts[] = {
            b2Vec2(-32.5f / PTM_RATIO, 52.0f / PTM_RATIO),
            b2Vec2(-60.0f / PTM_RATIO, 26.5f / PTM_RATIO),
            b2Vec2(-58.5f / PTM_RATIO, 17.5f / PTM_RATIO),
            b2Vec2(-34.5f / PTM_RATIO, 7.5f / PTM_RATIO),
            b2Vec2(-11.0f / PTM_RATIO, 25.0f / PTM_RATIO),
            b2Vec2(-17.5f / PTM_RATIO, 47.5f / PTM_RATIO)
        };
        spriteShape.Set(verts, num);

        int num2 = 6;
        b2Vec2 verts2[] = {
            b2Vec2(-26.5f / PTM_RATIO, 1.0f / PTM_RATIO),
            b2Vec2(-34.0f / PTM_RATIO, -13.5f / PTM_RATIO),
            b2Vec2(-26.5f / PTM_RATIO, -32.0f / PTM_RATIO),
            b2Vec2(0.5f / PTM_RATIO, -42.5f / PTM_RATIO),
            b2Vec2(49.0f / PTM_RATIO, -40.5f / PTM_RATIO),
            b2Vec2(49.5f / PTM_RATIO, -14.0f / PTM_RATIO)
        };
        spriteShape.Set(verts2, num2);

这只是用第二个多边形覆盖第一个多边形,而不是组合它们。我怎样才能将它们组合起来?

1 个答案:

答案 0 :(得分:2)

正如iforce2d所说,你应该创建多个灯具。请看我对这个问题的回答: Box2d multiple fixtures and positioning