1

我有一个 L 形的多边形,它显然是凹的,所以我需要使用多个SKPhysicsBody's。我尝试了一个包含精灵的主节点和两个子节点,这些子节点具有带有物理主体的矩形节点来组成 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];

我错过了什么,主节点没有附加物理主体,这可能是我认为的问题,但不知道该放什么。

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

4

1 回答 1

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;
于 2015-09-25T04:57:28.127 回答