1

L 字型の多角形がありますが、これは明らかに凹状であるため、複数SKPhysicsBodyの を使用する必要があります。スプライトを含むマスター ノードと、L を構成する物理ボディを持つ長方形のノードを持つ 2 つの子ノードを試しました。これを試してみましたが、オブジェクトは物理の影響を受けません。

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:]が導入されました。ドキュメントから:

このメソッドに渡された物理体の形状を使用して、その子の領域の和集合をカバーする新しい物理体が作成されます。これらの領域は連続している必要はありません。2 つのパーツの間にスペースがある場合、他のボディがこれらのパーツの間を通過できる可能性があります。ただし、物理ボディは 1 つの接続されたボディとして扱われます。つまり、ボディに適用される力または衝動は、あたかも破壊できないフレームで一緒に保持されているかのように、すべてのピースに影響を与えます。

あなたの例では、これを試すことができます(テストされていません):

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 に答える