实现一个绳子,参考网上的使用一串刚体的方式,但是受力总是很乱,绳子可以拉长很多,请教各位大神有没有好的实现方式,cocos的物理引擎有支持的绳子吗
auto sp3 = Sprite::create();
sp3->setTextureRect(Rect(0, 0, 10, 10));
auto body2 = PhysicsBody::createCircle(sp3->getContentSize().width / 2, PhysicsMaterial(1.0f, 0.0f, 0.0f));
body2->setCategoryBitmask(m_cId);
body2->setContactTestBitmask(0x0001);
body2->setCollisionBitmask(0x0001);
body2->setDynamic(false);
body2->setMass(body2->getMass() * 200000);
sp3->setPhysicsBody(body2);
sp3->setPosition(Vec2(s.width/2,0)+Vec2(0, 0));
sp->addChild(sp3);
Sprite* _sp2 = nullptr;
PhysicsBody* pby2 = nullptr;
auto st_po2 = sp3->getPositionY() - sp3->getContentSize().width;
auto dis_c2 = sp3->getContentSize().width;
for (int i = 0; i < 30; i++)
{
_sp2 = Sprite::create();
_sp2->setTextureRect(Rect(0, 0, 10, 10));
pby2 = PhysicsBody::createCircle(_sp2->getContentSize().width / 2);
pby2->setCategoryBitmask(m_cId);
pby2->setContactTestBitmask(0x0001);
pby2->setCollisionBitmask(0x0001);
pby2->setRotationEnable(false);
pby2->setMass(pby2->getMass() * 20000);
_sp2->setPhysicsBody(pby2);
_sp2->setPosition(sp3->getPositionX(), st_po2 - i*dis_c2);
sp->addChild(_sp2);
PhysicsJointDistance* physicsJoint2 = PhysicsJointDistance::construct(_sp2->getPhysicsBody(), sp3->getPhysicsBody(), Point::ZERO, Point::ZERO);
Director::getInstance()->getRunningScene()->getPhysicsWorld()->addJoint(physicsJoint2);ss
sp3 = _sp2;
}