如何将一个SKPhysicBody钉在另一个上而不会摔倒

时间:2013-12-18 04:16:32

标签: ios objective-c sprite-kit

我正在尝试将两个SKPhysicsBodies连接在一起,以便顶部的一个保持在原位,下面的一个在重力下落下,但附有一个关节。想象一下两个矩形,一个在顶部,一个在下面。顶部的那个“浮动”并且下面的一个用关节连接并且可以移动(可能是摆动或弹跳等)

当我尝试创建它时,即使我将affectedByGravity设置为NO,两个节点也会随着重力而下降。

self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];

    self.physicsWorld.gravity = CGVectorMake(0, -9.8);


    SKLabelNode *myLabel = [SKLabelNode labelNodeWithFontNamed:@"myFont"];

    myLabel.text = @"Hello, World!";
    myLabel.fontSize = 30;
    myLabel.position = CGPointMake(CGRectGetMidX(self.frame),
                                   CGRectGetMidY(self.frame));

    myLabel.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:myLabel.frame.size];
    myLabel.physicsBody.affectedByGravity = NO;

     [self addChild:myLabel];



    SKLabelNode *myLabel2 = [SKLabelNode labelNodeWithFontNamed:@"myFont"];

    myLabel2.text = @"Hello, World!";
    myLabel2.fontSize = 30;
    myLabel2.position = CGPointMake(CGRectGetMidX(self.frame),
                                   CGRectGetMidY(self.frame));

    myLabel2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:myLabel2.frame.size];


    [self addChild:myLabel2];


    CGPoint anchor = CGPointMake(CGRectGetMidX(self.frame),
                                 CGRectGetMidY(self.frame));
    SKPhysicsJointFixed* fixedJoint = [SKPhysicsJointFixed jointWithBodyA:myLabel.physicsBody
                                                                    bodyB:myLabel2.physicsBody
                                                                   anchor:anchor];
    [self.scene.physicsWorld addJoint:fixedJoint];

1 个答案:

答案 0 :(得分:1)

您可以将静态物体的dynamic属性设置为NO,这将导致身体忽略所有力和冲动,包括重力。