Spritekit - 创建一个"墙"

时间:2014-05-06 09:45:46

标签: ios xcode sprite-kit

我想知道如何用spritekit创建一个墙。物体上的物体无法移动过去。我知道我可以使用这段代码:

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];

...但是当我使用该代码时,我基本上得到了一个"地板"同样。我希望物体能够通过屏幕底部但不能离开侧面。

提前感谢您的帮助!

最诚挚的问候,路易斯。

2 个答案:

答案 0 :(得分:5)

听起来你需要2个物理身体,每个身体一个屏幕。尝试类似的东西。

// Left Wall
SKNode *node = [SKNode node];
node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(0.0f, 0.0f, 1.0f, CGRectGetHeight(self.frame))];
[self addChild:node];

// Right wall
node = [SKNode node];
node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetWidth(self.frame) - 1.0f, 0.0f, 1.0f, CGRectGetHeight(self.view.frame))];
[self addChild:node];

答案 1 :(得分:1)

您可以为此创建单独的SKNode。

    SKNode *leftWall = [SKNode node];
    leftWall.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.height, 1)];
    leftWall.physicsBody.categoryBitMask = wallCategory;
    leftWall.physicsBody.affectedByGravity = NO;
    leftWall.position = CGPointMake(0, self.size.height / 2);
    [self addChild:leftWall];

    SKNode *rightWall = [SKNode node];
    rightWall.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.height, 1)];
    rightWall.physicsBody.categoryBitMask = wallCategory;
    rightWall.physicsBody.affectedByGravity = NO;
    rightWall.position = CGPointMake(self.size.width, self.size.height / 2);
    [self addChild:rightWall];