场景是:一个玩家和一个盒子,玩家在盒子里。当我在屏幕上向右滑动时,播放器向右移动。当他到达盒子的右边缘时,他会将盒子推向右边。
所以我设计了两个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对象?我该如何实现我的想法?非常感谢你!
答案 0 :(得分:0)
您可以将子节点添加到框的(in)侧,并检查播放器内部节点之间的联系。进行联系时,只要注册了联系人,就可以手动移动父(框)。您可以使用box.position = CGPointMake(box.position.x, box.position.y+1);
之类的内容移动框。这将在update:
方法中完成。