2014-02-27 4 views
3

플레이어가 충돌 할 때 어떻게 동전을 사라지게 할 수 있습니까?스프라이트 키트 - 숨기기 SKSpriteNode

대신 SKNode를 사용해야하는지 또는 : /.

내가

CODE 그것을 알아낼 어차피 도와주세요 :

-(void)spawnCoin { 

SKNode* coinNode = [SKNode node]; 
coinNode.position = CGPointMake(self.frame.size.width + _buildTexture1.size.width + 150 + (arc4random() % 100), 0); 
coinNode.zPosition = -10; 

CGFloat y = arc4random() % (NSInteger)(self.frame.size.height/2) + 40; 

SKAction* spin = [SKAction repeatActionForever:[SKAction animateWithTextures:@[ _coinTexture1, _coinTexture2, _coinTexture3, _coinTexture4, _coinTexture5, _coinTexture6, _coinTexture7, _coinTexture8, _coinTexture9, _coinTexture10] timePerFrame:0.05]]; 
coin = [SKSpriteNode spriteNodeWithTexture:_coinTexture10]; 
[coin runAction:spin]; 


[coin setScale:1]; 
coin.position = CGPointMake(0, y); 
coin.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:coin.size]; 
coin.physicsBody.dynamic = NO; 
coin.physicsBody.categoryBitMask = coinCategory; 
coin.physicsBody.contactTestBitMask = playerCategory; 
[coinNode addChild:coin]; 
[coinNode runAction:_moveCoinAndRemove]; 
[_coins addChild:coinNode]; 


} 

- (void)didBeginContact:(SKPhysicsContact *)contact { 
if(_moving.speed > 0) { 
    if((contact.bodyA.categoryBitMask & coinCategory) == coinCategory || (contact.bodyB.categoryBitMask & coinCategory) == coinCategory) { 

     //I have Tried [coin removeAllChildren]; 


     _score++; 
     _scoreLabelNode.text = [NSString stringWithFormat:@"%ld", (long)_score]; 
} 
+0

[동전 removeFromParent] – LearnCocos2D

+0

나에게 다른 아이디어가 없다면? – nickivey

+0

동전을 지우려면 '동전'이 0이 아닌 한 그 동전은 없어야합니다. 그것이 사라지지 않으면 같은 위치에 두 개의 동전이있을 수 있습니다. – LearnCocos2D

답변

9

먼저 동전 노드를 가져옵니다. contact.bodyA.node 또는 contact.bodyB.node가 될 수 있습니다. 예를 들어 : -

SKNode* coinNode = contact.bodyA.node; 
[coinNode removeFromParent]; //This should work 

그냥 노드를 숨기려면이 다음

를 사용
coinNode.hidden = YES; 
관련 문제