2012-04-11 196 views
0

我正在用cocos2d在objective-c中製作iphone應用程序,在下面的代碼中,我嘗試檢測碰撞並運行動畫。 (box1通過觸摸移動)碰撞檢測Objective-C(cocos2d)

當「[self getChildByTag:d]」和「box1」碰撞並重疊時,我得到「JUMP NOW!」顯示,但我沒有得到跳轉本身,但是當box1從「[self getChildByTag:d]」移開時發生跳轉。

我知道這可能與多次調用該動作有關,但請向我解釋發生了什麼,請幫助我解決問題!

- (void)update:(ccTime)dt { 
    for (int d = lowestAvailableTag; d <= highestAvailableTag; d++) { 
     if ([self getChildByTag:d].position.y < (box1.position.y+45)&&    
      [self getChildByTag:d].position.x > (box1.position.x-45) && 
      [self getChildByTag:d].position.x < (box1.position.x+45)) { 

      NSLog(@"JUMP NOW!"); 

      if ([self getChildByTag:d].position.x < 150) { 
      [[self getChildByTag:d] runAction: 
       [CCJumpTo actionWithDuration:1.5 
         position:ccp(240, 140) height:110 jumps:1]]; 
      } 
     } 
    } 
} 

//阿爾巴

回答

0

您可以添加一些布爾標誌來檢測,如果你跳發生。水木清華這樣的:

- (void) update:(ccTime)dt 
{ 
    if(jumpOccured == false) 
    { 
     BOOL needToJump = // your jump condition 
     if(needToJump == true) 
     { 
      // your jump code 

      jumpOccured = true; 
     } 
    } 
} 

順便說一下,如果你有很多可能的衝突,你可以使用的Box2D檢測到它們