【发布时间】:2015-06-15 20:27:53
【问题描述】:
基本上,我正在努力做到这一点,以便当用户击中油箱时,旧油箱会消失,而新油箱会在随机位置产生。现在它正在检测碰撞,但我无法摆脱孩子。它只会增加一个新的油箱,而不会去掉旧的。
我可以做些什么来移除旧的孩子并生成一个新的孩子? removefromparent 和 removeallchildren 不起作用(nslog 显示“移动”,在检测到碰撞后我肯定会得到该语句)
- (void) fuelGenerate {
//make a fuel tank
for (int j=1; j<2; j++) {
SKSpriteNode *fuel = [SKSpriteNode spriteNodeWithImageNamed:@"fuel.png"];
fuel.position = CGPointMake(arc4random_uniform(self.frame.size.width), arc4random_uniform(self.frame.size.height));
[fuel setScale:0.6];
fuel.zPosition = 1;
fuel.shadowCastBitMask = 1;
fuel.name = @"fuelNode";
fuel.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:fuel.frame.size];
fuel.physicsBody.dynamic = FALSE;
fuel.physicsBody.affectedByGravity = false;
fuel.physicsBody.usesPreciseCollisionDetection = YES;
fuel.physicsBody.categoryBitMask = fuelCategory;
fuel.physicsBody.collisionBitMask = fuelCategory | fireCategory;
fuel.physicsBody.contactTestBitMask = fireCategory;
if (FuelGen == 1) {
[self addChild:fuel];
} else if (FuelGen == 0) {
NSLog(@"Move");
[fuel removeFromParent];
[self addChild:fuel];
FuelGen == 1
}
}
}
【问题讨论】:
-
您的代码存在一些逻辑问题,但在深入讨论之前,FuelGen 是什么?
-
只是一个系统来确定是否应该生成燃料箱等。它工作正常。我只是在删除旧孩子时遇到问题。
标签: objective-c iphone sprite-kit skspritenode