0

我正在使用 cocos2d 在objective-c 中制作一个iphone 应用程序,在下面的代码中我尝试检测碰撞然后运行动画。(box1被触摸移动)

当“[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]];
          }
      }
   }
}

//albar

4

1 回答 1

0

您可以添加一些 BOOL 标志来检测是否发生了跳转。喜欢:

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

            jumpOccured = true;
        }
    }
}

顺便说一句,如果你有很多可能的碰撞,你可以使用 box2d 来检测它们

于 2012-04-11T22:08:58.747 回答