2011-04-26 4 views
0

タイヤが画面にあり、タイヤの上部と画面の上部にロープを接続したいと考えています。私はchipmunk + spaceManagerで私のゲームに物理学を組み込んだので、このロープがどのように物理学に反応するかについていくつか必要があります。私はそれがヒットしたときにタイヤと前後に移動する必要があります。私はcpConstraintNodeを使用して、この点までロープとして使用するための線を描きましたが、私が見て見てきたすべてのことは、CCSpriteを制約に付加する方法がありません。だから私の質問は、どうやってこのロープを作って、それが動いているときにタイヤと同じように反応させるのだろうか?ここで私は制約に行っている私のコードは次のとおりです。私はcocos2dとシマリスを使用しています+ spaceMangerCCSpritesの作成とロープとしての使用

//The "rope" 
     cpVect a1 = cpv(0,30);  //Local coordinates of tire 
     cpVect a2 = cpv(70,320); //World coordinates (staticBody is at (0,0)) 

     //calculate the length of the rope 
     float max = cpvdist(cpBodyLocal2World(upper->body, a1), a2); 
     cpConstraint *rope = [game.spaceManager addSlideToBody:upper->body fromBody:game.spaceManager.staticBody toBodyAnchor:a1 fromBodyAnchor:a2 minLength:1 maxLength:max]; 

     cpConstraintNode *ropeNode = [cpConstraintNode nodeWithConstraint:rope]; 
     ropeNode.color = ccBLUE; 

答えて

0

このpost Verletの統合を使用してCocos2Dでロープを引くのに最適な方法を提示しています。

唯一の欠点は、この例でBox2Dが使用されていることです。しかし、コードはchipmunkに移植することができます。

0

VRopeとchipmunkを統合するためにgithubでVRopeプロジェクトを使いたいなら、私はそれだけで新しいブランチを作成しました。あなたはでそれを見つけることができます:

VRope Chipmunk Branch

それを使用しての例は次のとおりです。更新

作成

pinPointJoint = 
    cpSlideJointNew(body, 
        body2, 
        body.anchorPoint, 
        body2.anchorPoint, 
        minimumLength, 
        maximumLength); 

cpSpaceAddConstraint(space, pinPointJoint); 

rope = [[VRope alloc] init:pinPointJoint batchNode:ropeBatchNode]; 

[rope update:delta]; 
関連する問題