我正在制作一款游戏,它将触摸检测与圈子的skShapenodes结合在一起,并且无法找到检查它们是否接触的好方法。玩家类的代码在
之下-(void)SpawnPlayer
{
_player = [[SKShapeNode alloc] init];
CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddArc(myPath, NULL, 0,0, 15, 0, M_PI*2, YES);
_player.path = myPath;
_player.lineWidth = 1.0;
_player.fillColor = [SKColor whiteColor];
_player.strokeColor = [SKColor whiteColor];
_player.glowWidth = 0.5;
_location = CGPointMake(375, 400);
_player.position = CGPointMake(375, 400);
_player.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:0.5];
_player.physicsBody.dynamic = NO;
_player.physicsBody.categoryBitMask = playerCategory;
_player.physicsBody.contactTestBitMask = enemyCategory;
_player.physicsBody.collisionBitMask = 0;
[self addChild:_player];
}
敌人的代码类似,只是它的位掩码和testbitmask被切换。
答案 0 :(得分:0)
将其视为:
categoryBitMask
指定节点的主体类型。
collisionBitMask
指定它可以与哪种类型的物体碰撞。
contactTestBitMask
指定哪种类型的contactTestBitMasks将与之交互。
e.g。为了检测玩家和敌人之间的联系,它们有不同的categoryBitMasks,他们的contactTestBitMasks应该是:
_player.physicsBody.categoryBitMask = playerCategory;
_player.physicsBody.contactTestBitMask = playerCategory | enemyCategory ;
对于敌人:
_enemy.physicsBody.categoryBitMask = enemyCategory;
_enemy.physicsBody.contactTestBitMask = playerCategory | enemyCategory ;
现在您可以使用didBeginContact
方法