cocos2d-x V3.10的bug

在学cocos自带的物理引擎时,找了一些视频看,发现只有创建圆形和矩形body,没有多边形的。
我自己尝试了一下然后发现了以下的bug
在win10和win7,vs2013,vs2015下均会抛出异常
bool HelloWorld::init()
{

if ( !Layer::init() )
{
    return false;
}

auto rootNode = CSLoader::createNode("MainScene.csb");

addChild(rootNode);

Sprite* spr = Sprite::create("CloseSelected.png");
spr->setAnchorPoint(Vec2(0.5, 0.5));
spr->setPosition(Vec2(480,320));
Vec2 points[4] = {Vec2(-20,-20),Vec2(20,-20), Vec2(20,20), Vec2(-20,20)};
spr->setPhysicsBody(PhysicsBody::createPolygon(points, 4));//这一句
this->addChild(spr);

return true;

}
在spr->setPhysicsBody(PhysicsBody::createPolygon(points, 4));这一句引发异常

而改为spr->setPhysicsBody(PhysicsBody::createBox(spr->getContentSize()));就没有问题
然后我步入这个函数
bool PhysicsShapePolygon::init(const Vec2* points, int count, const PhysicsMaterial& material/* = MaterialDefault*/, const Vec2& offset/* = Vec2(0, 0)*/)
{
do
{
_type = Type::POLYGEN;

    auto vecs = new cpVect[count];
    PhysicsHelper::points2cpvs(points, vecs, count);
    auto shape = cpPolyShapeNew(s_sharedBody, count, vecs, PhysicsHelper::point2cpv(offset));//这一句
    CC_SAFE_DELETE_ARRAY(vecs);
    
    CC_BREAK_IF(shape == nullptr);
    
    addShape(shape);
    
    _area = calculateArea();
    _mass = material.density == PHYSICS_INFINITY ? PHYSICS_INFINITY : material.density * _area;
    _moment = calculateDefaultMoment();
    
    setMaterial(material);
    
    return true;
} while (false);

return false;

}
发现罪魁祸首是这个函数里的这一句 auto shape = cpPolyShapeNew(s_sharedBody, count, vecs, PhysicsHelper::point2cpv(offset));
cpPolyShapeNew这个函数就进不去了
最让我感到奇怪的是createBox也是用的一样的结构,也有cpPolyShapeNew这个函数,为什么没有抛异常而createPolygon就抛异常了?
bool PhysicsShapeBox::init(const Size& size, const PhysicsMaterial& material/* = MaterialDefault*/, const Vec2& offset /= Vec2(0, 0)/)
{
do
{
_type = Type::BOX;

    auto wh = PhysicsHelper::size2cpv(size);
    cpVect vec[4] =
    {
        {-wh.x/2.0f, -wh.y/2.0f}, {-wh.x/2.0f, wh.y/2.0f}, {wh.x/2.0f, wh.y/2.0f}, {wh.x/2.0f, -wh.y/2.0f}
    };
    
    auto shape = cpPolyShapeNew(s_sharedBody, 4, vec, PhysicsHelper::point2cpv(offset));//这一句
    
    CC_BREAK_IF(shape == nullptr);
    
    addShape(shape);
    
    _area = calculateArea();
    _mass = material.density == PHYSICS_INFINITY ? PHYSICS_INFINITY : material.density * _area;
    _moment = calculateDefaultMoment();
    
    setMaterial(material);
    
    return true;
} while (false);

return false;

}
我实在理解不了,求解答啊

points必须顺时针序列

原来如此,还以为是bug呢,谢谢~