如何在SpriteKit中构建一个L形的SKPhysicsBody节点?

时间:2014-03-07 20:13:52

标签: sprite-kit skphysicsbody

我有一个L形多边形,它显然是凹的,所以我需要使用多个SKPhysicsBody。我尝试了一个主节点,其中包含精灵和两个子节点,这些节点具有构成L的物理实体的矩形节点。我试过这个并且该对象不受物理影响。

SKPhysicsBody*body1 = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(48*1, 48*3) center:CGPointMake(48*1/2, (48*3)/2)];
SKPhysicsBody*body2 = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(48*1, 48*1) center:CGPointMake(48*1/2, (48*1)/2)];
SKNode* node1 = [SKNode node];
SKNode* node2 = [SKNode node];
node1.physicsBody = body1;
node2.physicsBody = body2;
[_node addChild:node1];
[_node addChild:node2];

我缺少什么,主节点没有附加物理主体,这是我想象的可能是问题,但不知道该放在那里。

我用一个简单的矩形体测试了精灵节点,效果很好。

1 个答案:

答案 0 :(得分:0)

iOS 7.1使用方法[SKPhysicsBody bodyWithBodies:]引入了复合物理实体。来自文档:

  

传递给此方法的物理实体的形状用于创建一个新的物理实体,其覆盖区域是其子区域的并集。这些区域不需要是连续的。如果两个部件之间有空间,则其他部件可能能够在这些部件之间穿过。然而,物理体被视为一个连接的身体,这意味着施加在身体上的力或冲动会影响所有碎片,就像它们与坚不可摧的框架保持在一起一样。

在您的示例中,您可以尝试此操作(未经测试):

SKPhysicsBody*body1 = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(48*1, 48*3) center:CGPointMake(48*1/2, (48*3)/2)];
SKPhysicsBody*body2 = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(48*1, 48*1) center:CGPointMake(48*1/2, (48*1)/2)];
SKPhysicsBody *compoundBody = [SKPhysicsBody bodyWithBodies:@[body1, body2]];
_node.physicsBody = compoundBody;