我正在为我的游戏创建一个屏蔽电源。它的工作方式是如果你拍摄一个通电图标,你会获得一个随着时间的推移而失效的盾牌。当一块岩石撞击盾牌时,它会被破坏而产生碎片。发生的问题是,在游戏过程中,当你点击多个盾牌图标时,创建的碎片数量会显着增加。就好像有多个盾牌,只有一个。我该如何解决?- [SKScene didBeginContact]执行多次
My Code:
- (void) didBeginContact:(SKPhysicsContact *)contact{
...
else if (firstBody.categoryBitMask == CollisionCategoryRocks && secondBody.categoryBitMask == CollisionCategoryShield){
// Rock hits Shield
if (!_shield.hidden){
if (firstBody.categoryBitMask == CollisionCategoryRocks){
SpaceRockNode *spaceRock = (SpaceRockNode *) firstBody.node;
[spaceRock removeFromParent];
[self createDebrisAtPosition:contact.contactPoint];
}
}
}
else if ((firstBody.categoryBitMask == CollisionCategoryLaser || firstBody.categoryBitMask == CollisionCategoryPlasmaShot ||firstBody.categoryBitMask == CollisionCategoryProjectile) && secondBody.categoryBitMask == CollisionCategoryShieldIcon){
// Projectile hits Shield Icon
if (!self.shieldIsActive){
self.shield = [ShieldNode shieldAtPosition:CGPointMake(CGRectGetMidX(self.frame)+4, CGRectGetMidY(self.frame)-210)];
[self addChild:self.shield];
self.shieldIsActive = YES;
SKAction *wait = [SKAction waitForDuration:ShieldTimer];
[self runAction:wait completion:^{
self.shield.hidden = YES;
self.shieldIsActive = NO;
}];
}
}
...
}
当我进入![self.children containsObject:self.shield]部分时,在第一次屏蔽启动后不再获得屏蔽。只有这样做才有效。 – Exprosul
@Exprosul是的。 **这就是要点。**如果你有多个盾牌,那么它不应该在第一个盾牌之上制造第二个盾牌。 – DDPWNAGE