cocos2d v3花栗鼠碰撞方法没有开火

时间:2014-08-16 22:52:27

标签: cocos2d-iphone collision-detection detection chipmunk

好吧所以我一直在搞乱花栗鼠,我可以让两个精灵互相反弹,但是当我尝试使用以下方法时,它永远不会发射,

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair tower:(CCNode *)nodeA BG:    
   (CCNode *)nodeB
   {
   NSLog(@"HELLO");
   return YES;
   }

我创建物理节点的地方:

    _physics = [CCPhysicsNode node];
    _physics.debugDraw = YES;
    [self addChild:_physics z:1];
    _physics.collisionDelegate = self;

我使用此代码创建第一个精灵:

    background = [CCSprite spriteWithImageNamed:gameLevelImage];
    [background setPosition:ccp(winSize.width/2,winSize.height/2)];
    background.physicsBody.collisionType = @"BG";
    background.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:50 andCenter:self.position];

这是另一个:

    tower = [[TowerType alloc] initWithTheGame:self location:ccp(winSize.width/2, winSize.height/2)];
    [towers addObject:tower];
    [self MenuItemsVisible];
    tower.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:50 andCenter:tower.position];
    tower.physicsBody.collisionType = @"tower";

我也在h文件中有协议。

如果有人知道发生了什么帮助将不胜感激。 (:

2 个答案:

答案 0 :(得分:1)

首先,两个机构是否在同一个CCPhysicsNode下?

其次,ccPhysicsCollisionBegin只是在碰撞BEGIN时被调用,因为你的两个身体都是一个在另一个身上,并且由于重力,它们将一起移动,因为它们开始碰撞,所以碰撞永远不会开始。碰撞评估的周期是:

ccPhysicsCollisionBegin:一旦两个身体开始碰撞就被召唤 ccPhysicsCollisionPreSolve:在物理计算之前调用每帧更新 ccPhysicsCollisionPostSolve:在物理计算后调用每一帧 ccPhysicsCollisionSeparates:一旦分开就调用

答案 1 :(得分:0)

在尝试设置collisionType之前,请确保正确分配了精灵。在我的类似案例中,这对我来说是个问题。