2014-05-21 9 views
2

가 어떻게 내 응용 프로그램이 오브젝트가 얼마나 많은 시간을 계산 얻을 수 명중 횟수 개수 :SpriteKit - 객체가 다른

- (void)createFloor { 
    SKNode *floor = [SKNode node]; 
    floor.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMinY(self.frame),1.0 , CGRectGetWidth(self.frame), 1)]; 
    floor.physicsBody.categoryBitMask = floorCategory; 
    [self addChild: floor]; 
} 

는 기본적으로, 내가 원하는 :

- (SKNode*)addRock { 
    SKSpriteNode* rock = [SKSpriteNode spriteNodeWithImageNamed:@"asteroid"]; 
    //set the position to a random X value 
    rock.position=CGPointMake ([self makeRandomXWBetween:0 and:self.size.width],self.size.height); 
    rock.name = @"rock"; 
    rock.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:rock.size]; 
    rock.physicsBody.usesPreciseCollisionDetection = YES; 
    rock.physicsBody.allowsRotation = NO; 
    rock.physicsBody.categoryBitMask = rockCategory; 
    rock.physicsBody.contactTestBitMask = dodgerCategory; 

    [self addChild:rock]; 

    return self; 
} 

이 객체를 공격합니다 'addRock'개체가 'createFloor'개체와 접촉 할 횟수와 접촉 횟수가 왼쪽 위 모서리에 배치 될 수 있는지 계산하는 앱입니다.

미리 도움을 청하십시오!

답변

3

카운터를 만들려면 didBeginContact : 메서드를 사용하여 카운터를 증가시키고 카운터로 SKLabelNode를 업데이트합니다. 갱신)

-(void)didBeginContact:(SKPhysicsContact *)contact 
{ 
    uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask); 
    if (collision == (dodgerCategory | floorCategory)) 
    { 
     counter++; 
     updateLabel = true; 
    } 
} 

3 레이블 텍스트 : 연락처에 대한 확인)

@implementation MyScene 
{ 
    int counter; 
    BOOL updateLabel; 
    SKLabelNode *counterLabel; 
} 

-(id)initWithSize:(CGSize)size 
{ 
    if (self = [super initWithSize:size]) 
    { 
     counter = 0; 

     updateLabel = false; 

     counterLabel = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; 
     counterLabel.name = @"myCounterLabel"; 
     counterLabel.text = @"0"; 
     counterLabel.fontSize = 20; 
     counterLabel.fontColor = [SKColor yellowColor]; 
     counterLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter; 
     counterLabel.verticalAlignmentMode = SKLabelVerticalAlignmentModeBottom; 
     counterLabel.position = CGPointMake(50,50); // change x,y to location you want 
     counterLabel.zPosition = 900; 
     [self addChild: counterLabel]; 
    } 
} 

2 :

-(void)update:(CFTimeInterval)currentTime 
{ 
    if(updateLabel == true) 
    { 
     counterLabel.text = [NSString stringWithFormat:@"Counter: %i",counter]; 
     updateLabel = false; 
} 
+0

이 카운터가에 표시되지 않습니다를

1) 카운터 만들기 내가 추가 할 때 화면. – user3578149

+0

@ user3578149 - 나머지 레이블 속성을 추가 했습니까? "여기 나머지 레이블 속성을 설정했습니다 ..."? – sangony

+0

그 밖의 무엇을 추가해야합니까? 이것은 지금까지 내가 추가 한 것입니다.'counterLabel.fontSize = 20; counterLabel.position = CGPointMake (self.size.width/2.0f, self.size.height/1.3f); [self addChild : counterLabel]; ' – user3578149