2014-09-21 4 views
0

привет, я делаю игру, в которой я могу получить счет с sklabelnode легко даже я сделал, как получить награды, когда пользователь достигает 25, 50 пунктов и так далее, но когда я достигаю 50 и> 50 м. Получая бронзу только не серебро и золото, так что я ошибся.Награды за оценку в комплекте спрайтов xcode

@implementation MyScene { 
int _gameScore; 
SKNode *_gameLayer;} 

-(void)didBeginContact:(SKPhysicsContact *)contact 



SKSpriteNode *coin = nil; 
    if (_gameScore >= 25) { 

     coin = [SKSpriteNode spriteNodeWithImageNamed:@"bronze"]; 
    } else if (_gameScore >= 50) { 

     coin = [SKSpriteNode spriteNodeWithImageNamed:@"silver"]; 
    }else if (_gameScore >= 100) { 

     coin = [SKSpriteNode spriteNodeWithImageNamed:@"gold"]; 
    } 
    else { 
     //blank coin 
     coin = [SKSpriteNode spriteNodeWithImageNamed:@"noreward"]; 
    } 

    if (coin != nil) { 

     coin.position = CGPointMake(self.size.width/2, self.size.height/2); 
     coin.zPosition = 201; 
     [coin setSize:CGSizeMake(100, 100)]; 

     [_gameLayer addChild:coin]; 
    } 
+0

, когда я добавляю, если все награды он показывает только «noward» – anjani

ответ

3

, как вы есть сейчас, вы увидите ваш «бронза» монета в любое время _gameScore больше или равна 25. Поскольку 50 и 100 также больше, чем 25 и ваши чеки для них являются после чек на 25, вы никогда не увидите «серебро» или «золото»

Поскольку вы используете >=, ваши чеки должны идти от самого высокого до самого низкого:

if (_gameScore >= 100) { 

    coin = [SKSpriteNode spriteNodeWithImageNamed:@"gold"]; 
} else if (_gameScore >= 50) { 

    coin = [SKSpriteNode spriteNodeWithImageNamed:@"silver"]; 
} else if (_gameScore >= 25) { 

    coin = [SKSpriteNode spriteNodeWithImageNamed:@"bronze"]; 
} else { 
    //blank coin 
    coin = [SKSpriteNode spriteNodeWithImageNamed:@"noreward"]; 
} 
+0

ой да это правда только логика спасибо :) – anjani