我正在尝试制作一款SpriteKit游戏,但我无法找到或找到多个碰撞检测的好例子。
我的代码:
-(void)didBeginContact:(SKPhysicsContact *)contact{
SKPhysicsBody *firstBody;
SKPhysicsBody *secondBody;
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else
{
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
if ((firstBody.categoryBitMask & bulletCategory) != 0) {
[self updateScore];
SKNode *applenode = [self childNodeWithName:(@"Apple")];
applenode.removeFromParent;
[self updateScore];
SKScene *sampleScene = [[Level2 alloc] initWithSize:self.size];
SKTransition *transition = [SKTransition flipVerticalWithDuration:0.5];
[self.view presentScene:sampleScene transition:transition];
}
在一次碰撞中工作得很好,但我似乎不能让它多次工作。
//对于多重碰撞,你可以添加像
这样的代码(void) didBeginContact: (SKPhysicsContact *)接触{
CGPoint contactPoint=CGPointMake(0, 0); //multiple collision if (contact.bodyA.categoryBitMask || contact.bodyB.categoryBitMask) { //first collision if(([contact.bodyA.node.name isEqualToString:@"hero"] && [contact.bodyB.node.name isEqualToString:@"coin"] ) || ([contact.bodyA.node.name isEqualToString:@"coin"] && [contact.bodyB.node.name isEqualToString:@"hero"]) ) { if([contact.bodyA.node.name isEqualToString:@"coin"] ) { [contact.bodyA.node removeFromParent]; } else { [contact.bodyB.node removeFromParent]; } } //second collision else if(([contact.bodyA.node.name isEqualToString:@"hero"] && [contact.bodyB.node.name isEqualToString:@"enemy"] ) || ([contact.bodyA.node.name isEqualToString:@"enemy"] && [contact.bodyB.node.name isEqualToString:@"hero"]) ) { if([contact.bodyA.node.name isEqualToString:@"hero"] ) { [contact.bodyA.node removeFromParent]; } else { [contact.bodyB.node removeFromParent]; } } }
}