下午好,使用 Xcode / Spritekit / OSX 10.9.1
在我试图扩展的教程中,我设置了 3 种方法来召唤心灵。心在现场显示如下:
-(SKSpriteNode*) healthContainer1 {
SKSpriteNode *heart1 = [SKSpriteNode spriteNodeWithImageNamed:@"heartfull"];
heart1.name = @"healthContainer1";
heart1.position = CGPointMake(CGRectGetMinX(self.frame) + 25, CGRectGetMaxY(self.frame) - 30);
return heart1;
if (hitCount == 3) {
[self removeFromParent];
}
}
-(SKSpriteNode*) healthContainer2 {
SKSpriteNode *heart2 = [SKSpriteNode spriteNodeWithImageNamed:@"heartfull"];
heart2.name = @"healthContainer2";
heart2.position = CGPointMake(CGRectGetMinX(self.frame) + 50, CGRectGetMaxY(self.frame) - 30);
return heart2;
if (hitCount == 2) {
[self removeFromParent];
}
}
-(SKSpriteNode*) healthContainer3 {
SKSpriteNode *heart3 = [SKSpriteNode spriteNodeWithImageNamed:@"heartfull"];
heart3.name = @"healthContainer3";
heart3.position = CGPointMake(CGRectGetMinX(self.frame) + 75, CGRectGetMaxY(self.frame) - 30);
return heart3;
if (hitCount == 1) {
[self removeFromParent];
}
}
心脏容器在initWithSize:
方法中被调用
[self addChild:[self heartContainer1]];
[self addChild:[self heartContainer2]];
[self addChild:[self heartContainer3]];
MyhitCount
是在头文件中设置的 int,我使用以下方法以及更新方法的第二个发布部分来检测损坏。我试图在heartContainer
基于hitCount
int 造成损坏时自行移除。
-(void) doDamage:(SKSpriteNode*)character {
isDamaged = YES;
hitCount ++;
}
if ( [character intersectsNode:node] && isDamaged == NO) {
[self doDamage:character];
NSLog(@"Intersection occured");
}
抱歉,如果是多个heartContainer
方法上显示的多余代码,我只是想我可以检查heartContainer
方法本身中的 int ,然后在满足条件时将其删除。我还尝试在调用它们后立即将 if 语句放入initWithSize:
方法中,但这也不起作用。