0

画面の上部からぶら下がっているロープを実装しています。現在、ロープを作成するために 1 つの動的ボディを使用しています。このすべての動的ボディを結合してロープを作成するために回転ジョイントを使用しています。ロープの作成に成功しましたが、このロープを地上のボディに結合しようとすると、ロープが固定されません。ロープの作成に使用したダイナミック ボディが原因だと思います。これをディスタンスジョイントに参加させようとしていますが、機能していません。数週間からこれに固執しています..助けてください.

ロープ:

b2Body* link;
CGSize s = [CCDirector sharedDirector].winSize;

CGFloat linkHeight = 0.24;
CGFloat linkWidth = 0.1;

link = world->CreateBody( &bodyDef );
link->CreateFixture( &fixtureDef );


PhysicsSprite* segmentSprite = [PhysicsSprite spriteWithFile:@"rope_seg_new2.png"];
[self addChild:segmentSprite];
[segmentSprite setPhysicsBody:link];


//set up the common properties of the joint before entering the loop



revoluteJointDef.localAnchorA.Set( 0,  linkHeight);
revoluteJointDef.localAnchorB.Set( 0, -linkHeight);


//use same definitions to create multiple bodies

for (int i = 0; i < 10 ; i++) {



    newLink = world->CreateBody( &bodyDef );
    newLink->CreateFixture( &fixtureDef );
    PhysicsSprite* segmentSprite = [PhysicsSprite spriteWithFile:@"rope_seg_new2.png"];
    [self addChild:segmentSprite];
    [segmentSprite setPhysicsBody:link];

    revoluteJointDef.bodyA = link;
    revoluteJointDef.bodyB = newLink;

    world->CreateJoint( &revoluteJointDef );

    link = newLink;  //prepare for next iteration
}

GroundBody と Rope の間のジョイント:

 Distance joint :

b2DistanceJointDef jointDef;

jointDef.Initialize(referencebody, link, referencebody->GetWorldCenter(), link-

>GetWorldCenter());

world->CreateJoint( &jointDef );  

ここでは referencebody : groundbody .. link : ロープ本体

4

1 に答える 1