5

Apple Sprite Kit を使用して小さなゲームを書いています。

衝突で困っています。物理ボディを持つ 2 つの skSpriteNode を相互作用させたくない場合があります。

例として、 HERO 、 ENEMYS 、および SHOTS があり、SHOTS が ENEMYS とのみ相互作用するようにします。

しかし、2 つのショットが衝突すると、位置が変わります。

ショットのコードは

   shot.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:shot.size];
   shot.physicsBody.dynamic = YES;
   shot.physicsBody.allowsRotation = FALSE;
   shot.physicsBody.categoryBitMask = playerShotCategory;
   shot.physicsBody.contactTestBitMask = enemyCategory;

敵のコードは

   activeGameObject.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:activeGameObject.size];
    activeGameObject.physicsBody.dynamic = YES;
    activeGameObject.physicsBody.categoryBitMask = enemyCategory;
    activeGameObject.physicsBody.contactTestBitMask = playerCategory | playerShotCategory;
    activeGameObject.physicsBody.allowsRotation = FALSE;
4

1 に答える 1

6

ショットが敵と相互作用するだけの場合は、次のコードを追加する必要があります。

shot.physicsBody.collisionBitMask = enemyCategory;
activeGameObject.physicsBody.collisionBitMask = playerShotCategory|playerCategory;

詳細については、collisionBitMask のドキュメントを参照してください。衝突に関与させたい他のカテゴリがある場合は、collisionBitMask をいじる必要があるかもしれません。

于 2013-10-01T15:04:55.093 に答える