关于Armature::getShapeList

Armature::getShapeList 是否是获取在cocosstudio 编辑器中设置的碰撞区域
获取到之后如何使用
我现在的问题是 使用BOX2D getShapeList 获取不到碰撞区域会报错 能不能提供下可以参考的代码谢谢

你好,请检查下宏设置是否正确。

宏设置是正确的 开启了BOX2D 编辑器中也设置了碰撞区域 在用Armature 对象调用 getShapeList()方法的时候 获取到的b2Fixture 对象是空

有没有具体的实例 能体现出 编辑器中的碰撞区域是如何关联到代码的 如果我获取到b2Fixture 是用b2Fixture->GetBody(); 方法获取body 对象然后用Armature 的setBody 方法么?

关于这个问题我到论坛有很多提问但都是没有解决的,请求斑竹能弄一个例子,看能不能详细解决一下这个问题

我进入到getShapeList 方法

b2Fixture*Armature::getShapeList()
{
if(_body){
return _body->GetFixtureList();
}else{
return nullptr;
}
首先 我就是想通过该方法获取碰撞区域来设置body 现在 要从body获取 这里不是很理解 能不能给段代码 还是说在Armature 生成的时已经产生body了

}

// 加载
ArmatureDataManager::getInstance()->addArmatureFileInfo(“DemoPlayer0.png”,“DemoPlayer0.plist”,“DemoPlayer.ExportJson”);

armature = Armature::create("DemoPlayer"); 
armature->setPosition(Point(visibleSize.width * 0.8,visibleSize.height * 0.5)); 
armature->getAnimation()->playByIndex(0); 
armature->setScale(0.25); 
this->addChild(armature);  


// 设置body 
auto playerPos = Point(armature->getPositionX(), armature->getPositionY());     
b2BodyDef bodyDef2; 
bodyDef2.type = b2_dynamicBody;            
bodyDef2.position.Set(playerPos.x/PT_RATIO, playerPos.y/PT_RATIO); 
bodyDef2.userData = armature;     

b2Body *playerBody = world->CreateBody(&bodyDef2);     
//playerBody->CreateFixture(&fixtureDef2); 
playerBody->SetGravityScale(10);  
armature->setBody(playerBody); 

// 设置filter 
b2Filter filter; 
filter.categoryBits = 1; 
filter.maskBits = 1;  
 

for (b2Fixture* shapes = armature->getBody()->GetFixtureList(); shapes; shapes = shapes->GetNext()) 
{ 
    //shapes->SetSensor(true); 
    shapes->SetDensity(5.0f/CC_CONTENT_SCALE_FACTOR()); 
    shapes->SetRestitution(1.0f); 
    shapes->SetFriction(0.2f);  
    shapes->SetFilterData(filter);      
}