Search code examples
iossprite-kitskspritenodeskphysicsbodyskphysicsjoint

How to join two SKSpriteNodes using SKPhysicsJointFixed


When I attempt to join two SKSpriteNodes with SKPhysicsJointFixed, they separate as if not connected at all. Nothing I do seems to work. Here's my code...

CGPoint position = CGPointMake(100, 100);
CGSize size = CGSizeMake(4, 64);

SKSpriteNode *node1 = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:size];
node1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size];
node1.position = position;

SKSpriteNode *node2 = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:size];
node2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size];
node2.position = position;

[scene addChild:node1];
[scene addChild:node2];

SKPhysicsJointFixed *joint = [SKPhysicsJointFixed jointWithBodyA:node1.physicsBody
                                                            bodyB:node2.physicsBody
                                                          anchor:CGPointMake(100, 100)];
[scene.physicsWorld addJoint:joint];

Thanks in advance.


Solution

  • this is my working code....

    CGPoint position = CGPointMake(100, 350);
    CGPoint position2 = CGPointMake(100, 420);
    CGSize size = CGSizeMake(4, 164);
    
    SKSpriteNode *node1 = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:size];
    node1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size];
    node1.position = position;
    
    SKSpriteNode *node2 = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:size];
    node2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size];
    node2.position = position2;
    
    [scene addChild:node1];
    [scene addChild:node2];
    
    SKPhysicsJointFixed *joint = [SKPhysicsJointFixed jointWithBodyA:node1.physicsBody
                                                                       bodyB:node2.physicsBody
                                                                      anchor:CGPointMake(node1.position.x, node1.position.y-30)];
    
    [scene.physicsWorld addJoint:joint];