创建CCSprites并将它们用作绳索

时间:2011-04-26 16:08:18

标签: cocos2d-iphone chipmunk

我的屏幕上有一个轮胎,我希望有一根绳子连接到轮胎顶部和屏幕顶部。我已经将物理学与chipmunk + spaceManager结合到我的游戏中,所以我需要知道这条绳索对物理学的反应。我只需要它在轮胎受到撞击时来回移动。我已经使用了一个cpConstraintNode来绘制一条线来使用它作为绳索直到这一点,但我已经看到并查看了所有内容,没有办法将CCSprite附加到约束。所以我的问题是如何制作这根绳子并让它在轮胎移动时的反应与轮胎相同?这是我用约束做的代码:我使用的是cocos2d和chipmunk + spaceManger

//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;

2 个答案:

答案 0 :(得分:0)

这个post提供了一种使用Verlet集成在Cocos2D中绘制绳索的好方法。

唯一的缺点是该示例使用Box2D。但代码可以移植到chipmunk。

答案 1 :(得分:0)

如果你想在github上使用VRope项目来集成VRope和chipmunk,我已经创建了一个新的分支来做到这一点。您可以在以下位置找到它:

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];