我在目标c中使用带有spritekit的LiquidFun,在我的Box2d世界中,我想为我的精灵创建b2PolygonShape,我的精灵如下图所示:
我尝试了以下代码:
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完全设置为我的精灵图像大小?
感谢。
答案 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;