Ios 具有自定义多边形的box2d崩溃

Ios 具有自定义多边形的box2d崩溃,ios,objective-c,cocoa-touch,cocos2d-iphone,box2d,Ios,Objective C,Cocoa Touch,Cocos2d Iphone,Box2d,我创建了一个有5个顶点的多边形,所有顶点都由VertexHelper生成 为什么程序在b2PolygonShape.cpp中的ComputeCentroid()中的b2Assert(area>b2_epsilon)处获得SIGABRT 当我使用shape.SetAsBox(.359375,1.0)而不是shape.Set(顶点,计数)时,程序运行良好 当使用shape.Set()时,在计算质心时似乎出现了一些错误,但我不知道如何处理这个问题 代码如下: b2BodyDef bodyDef; bo

我创建了一个有5个顶点的多边形,所有顶点都由VertexHelper生成

为什么程序在b2PolygonShape.cpp中的ComputeCentroid()中的b2Assert(area>b2_epsilon)处获得SIGABRT

当我使用shape.SetAsBox(.359375,1.0)而不是shape.Set(顶点,计数)时,程序运行良好

当使用shape.Set()时,在计算质心时似乎出现了一些错误,但我不知道如何处理这个问题

代码如下:

b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.awake = NO;
bodyDef.position.Set(3.125, 3.125);
bodyDef.angle = -.785398163397;
spriteBody = world->CreateBody(&bodyDef);
spriteBody->SetUserData(sprite);
b2MassData massData = {2.0, b2Vec2(0.021875, 0.203125), 0.0};
spriteBody->SetMassData(&massData);
int32 count = 5;
b2Vec2 vertices[] = {
    b2Vec2(-11.5f / PTM_RATIO, -16.0f / PTM_RATIO),
    b2Vec2(-10.5f / PTM_RATIO, 15.0f / PTM_RATIO),
    b2Vec2(10.5f / PTM_RATIO, 15.0f / PTM_RATIO),
    b2Vec2(10.5f / PTM_RATIO, -5.0f / PTM_RATIO),
    b2Vec2(-5.5f / PTM_RATIO, -16.0f / PTM_RATIO)
};
b2PolygonShape shape;
shape.Set(vertices, count);
b2FixtureDef fixtureDef;
fixtureDef.shape = &shape;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.2f;
fixtureDef.restitution = 0.7f;
spriteBody->CreateFixture(&fixtureDef);

看起来你的顶点绕错了方向。我认为它们应该在box2d中逆时针,至少在默认情况下是这样


您的断言将失败,因为面积的计算将返回一个负值,远小于我逆时针放置的b2_epsilon值,并且有效。非常感谢。:)