2012-07-09 32 views
1

我試圖使評分系統cocs2d但我有在比分上有些問題,我已經在.M有一些ISSU與cocos2d的評分系統

if (CGRectContainsPoint(bug.boundingBox, location)) { 
     [self removeChild:bug cleanup: YES]; 
     score += 1; 
     NSLog(@"%i", score); 
    } 

寫這些,我必須聲明評分在.H

@interface GameScene : CCLayer { 
     NSMutableArray *bugs; 
     int score; 

}

,但如果我碰雪碧我得到1分和精靈得到去除,但是當我觸摸到的地方的精靈那裏我得到的每一次得分+1我觸摸它e。

我希望你明白..謝謝,,

回答

0

你的源代碼少了。但是,您可以使用將在接口中聲明的整型變量。在實施組整數變量設爲0(在init方法),並在創建新的bug增加整數值多了一個,並設置錯誤精靈標記整數值是這樣的:

在ccTouchEnded方法
// Interface 
@interface yourScene:CCLayer { 
    int bugsCount; // add new variable for counting current bugs 
} 

// implementation 
@implementation 
-(id) init {   

   if((self=[super init])) { 

     // Your code in init 

     // integer value for counting current bugs 
     bugsCount = 0; 

    } 

    return self; 
} 

-(void) addNewBug { 

    // your code of adding bugs 
    CCSprite *bug = [CCSprite spriteWithFile:@"bug.png"]; 
    bugsCount++; 
    bug.tag = bugsCount; // Your bug sprite tag should be equal current bugsCount value 
    bug.position = ccp(x,y); 
    [self addChild:bug]; 

} 

for循環只是做以這種方式檢測選擇哪個錯誤:

-(void) ccTouchesEnded:(NSSet*)touches withEvent:(id)event { 

    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:[touch view]]; 
    location = [[CCDirector sharedDirector] convertToGL:location]; 
    location = [self convertToNodeSpace:location]; 

    // Detecting bug by touch 
    for (i=1; i <= bugsCount; i++) { 

     // get bug sprite by tag (from bugsCount idea) 
     CCNode *bug = [self getChuldByTag:i]; 
     if (CGRectContainsPoint(bug.boundingBox, location)) { 

      // add new score (now this will work) 
      score += 1; 
      NSLog(@"%i", score); 

      // remove bug from scene 
      [self removeChildByTag:1 cleanup:YES]; 

      // decrease number of bugs 
      bugsCount--; 
     } 
    } 

} 
0

您需要從錯誤數組中刪除的bug,你從場景圖中刪除後,我懷疑。

0

這是一個簡單的辦法,應該爲你工作(當然可以更有效的,但我還是決定保持簡單)

創建一個名爲錯誤,在它的一些特性,例如一類,其中布爾稱爲「殺死」,只要一個bug被殺死,你就設置爲true。讓bug參考一個精靈,或者擴展精靈類,這樣你就可以知道它在哪裏以及它是否被觸摸。

現在,當你按下一個bug時,總是檢查它是否被殺死,如果是,就不要給它評分。

將所有的bug對象添加到你的bugsarray中,而不是你的精靈。你可以通過bug對象訪問精靈。當你的錯誤被殺死後,重新使用它們來節省內存(即將它們從屏幕上移開並讓它們再次出現,將「殺死」屬性再次設置爲假)

快樂尋找bug!