如何在另一个SKPhysicsBody对象中实现SKPhysicsBody对象?

时间:2014-04-22 08:30:23

标签: ios7 sprite-kit game-physics skphysicsbody

场景是:一个玩家和一个盒子,玩家在盒子里。当我在屏幕上向右滑动时,播放器向右移动。当他到达盒子的右边缘时,他会将盒子推向右边。

所以我设计了两个SKNode

    CGRect box = CGRectMake(110, 270, 100, 100);
    SKShapeNode *shapeNode = [[SKShapeNode alloc] init];
    shapeNode.path = [UIBezierPath bezierPathWithRect:box].CGPath;
    shapeNode.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:shapeNode.path];
    shapeNode.physicsBody.dynamic = NO;
    shapeNode.physicsBody.categoryBitMask = kbox;
    shapeNode.physicsBody.collisionBitMask = 1;
    shapeNode.physicsBody.contactTestBitMask = kplayer;
    [self addChild:shapeNode];

    SKSpriteNode *player = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor]   size:CGSizeMake(10, 30)];
    player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.size];
    player.physicsBody.categoryBitMask = kplayer;
    player.physicsBody.collisionBitMask = 1;
    player.physicsBody.contactTestBitMask = kbox;
    player.position = CGPointMake(self.size.width/2, self.size.height/2);
    [self addChild:player];

上面的初始代码不起作用,shapeNode无法与播放器发生冲突。如何在另一个SKPhysicsBody对象中实现SKPhysicsBody对象?我该如何实现我的想法?非常感谢你!

1 个答案:

答案 0 :(得分:0)

您可以将子节点添加到框的(in)侧,并检查播放器内部节点之间的联系。进行联系时,只要注册了联系人,就可以手动移动父(框)。您可以使用box.position = CGPointMake(box.position.x, box.position.y+1);之类的内容移动框。这将在update:方法中完成。