我想知道如何用spritekit创建一个墙。物体上的物体无法移动过去。我知道我可以使用这段代码:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
...但是当我使用该代码时,我基本上得到了一个"地板"同样。我希望物体能够通过屏幕底部但不能离开侧面。
提前感谢您的帮助!
最诚挚的问候,路易斯。
答案 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];