请教3.10 物理引擎 绳子的实现方式

实现一个绳子,参考网上的使用一串刚体的方式,但是受力总是很乱,绳子可以拉长很多,请教各位大神有没有好的实现方式,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;
        }

请教楼主物理 绳子有解决了吗