我必须在与敌人目标接触时删除一个。我试过这个,但这删除了所有的猫。我只删除了接触猫。
-(void)didBeginContact:(SKPhysicsContact *)contact
{
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (enemyCategory | catsCategory)) {
[self enumerateChildNodesWithName:@"cats" usingBlock:^(SKNode *node, BOOL *stop) {
[node removeFromParent];
}];
NSLog(@"test 1");
}
答案 0 :(得分:0)
代码:
[self enumerateChildNodesWithName:@"cats" usingBlock:^(SKNode *node, BOOL *stop) {
[node removeFromParent];
}];
将删除名称属性为@" cats"的所有节点。因此,它正在移除屏幕上的所有猫。
您需要检查联系人cat是否与被枚举者相同,然后将其删除。
[self enumerateChildNodesWithName:@"cats" usingBlock:^(SKNode *node, BOOL *stop) {
if ([contact.bodyA.node isEqual:node] || [contact.bodyB.node isEqual:node])
{
[node removeFromParent];
stop = YES;
}
}];
您可以详细了解enumerateChildNodesWithName:usingBlock:
方法here。