这两天因需求问题,需要用到 PhysicsJointPin 别针关节。代码如下:
Node *ladder = Node::create();
ladder->setPosition(Vec2(100 , 200));
addChild(ladder);
auto border = PhysicsBody::createEdgeSegment(Vec2(-ladder->getContentSize().width/2+3, ladder->getContentSize().height/2),
Vec2(-ladder->getContentSize().width/2+3, -ladder->getContentSize().height/2));
ladder->setPhysicsBody(border);
// 固定点
auto dotNode = Node::create();
dotNode->setPosition(Vec2(ladder->getBoundingBox().getMinX(), stepR->getBoundingBox().getMaxY()));
dotNode->setPhysicsBody(PhysicsBody::createCircle(1));
dotNode->getPhysicsBody()->setDynamic(false);
dotNode->getPhysicsBody()->setCategoryBitmask(0x0);
addChild(dotNode);
// 别针关节
auto joint = PhysicsJointPin::construct(ladder->getPhysicsBody(), dotNode->getPhysicsBody(), dotNode->getPosition());
addJoint(joint);
结果到最后一句 addJoint时就报错。。百思不得其解!!
最后通过编写demo反复对比验证得出结论
构建关节所需的两个body必须都是实心的形状,而不可以是边界围城的空心形状(带 Edge 字眼的)!! 感觉巨坑