将polygonShape设置为六边形

时间:2015-04-07 08:00:29

标签: objective-c sprite-kit box2d box2d-iphone

我在目标c中使用带有spritekit的LiquidFun,在我的Box2d世界中,我想为我的精灵创建b2PolygonShape,我的精灵如下图所示:

enter image description here

我尝试了以下代码:

b2PolygonShape polygonShape;
b2Vec2 vertices[6];
for (int i = 0 ; i < 6 ; i++) {
floate angle = -i/6.0 * 360 * DEGTORAD;
vertices[i].Set(sinf(angle), cosf(angle));
}

polygonShape.Set(vertices, 6);

它有效,但它比精灵的图像小,我无法看到物理线,因为我可以通过设置在spritekit的物理世界中看到它们:

SkView.showsPhysics = YES;

我的问题是:如何将polygonShape完全设置为我的精灵图像大小?

感谢。

1 个答案:

答案 0 :(得分:2)

当没有人回答您的问题时,这是一种很棒的感觉,然后您为自己的问题发布答案:)

就像这些行一样简单:

b2Vec2 Verts[6];

    Verts[5].Set(-(sprite.frame.size.width/2)/DISPLAY_SCALE,0/DISPLAY_SCALE);
    Verts[4].Set(-(0.5*sprite.frame.size.width/2)/DISPLAY_SCALE,(sprite.frame.size.height/2)/DISPLAY_SCALE);
    Verts[3].Set((0.5*sprite.frame.size.width/2)/DISPLAY_SCALE,(sprite.frame.size.height/2)/DISPLAY_SCALE);
    Verts[2].Set((sprite.frame.size.width/2)/DISPLAY_SCALE,0/DISPLAY_SCALE);
    Verts[1].Set((0.5*sprite.frame.size.width/2)/DISPLAY_SCALE,-(sprite.frame.size.height/2)/DISPLAY_SCALE);
    Verts[0].Set(-(0.5*sprite.frame.size.width/2)/DISPLAY_SCALE,-(sprite.frame.size.height/2)/DISPLAY_SCALE);

    b2PolygonShape Shape;
    Shape.Set(Verts,num);

请注意:

const float DISPLAY_SCALE = 32.0;