【问题标题】:cocos2d v3 chipmunk collision method not firingcocos2d v3 花栗鼠碰撞方法不触发
【发布时间】:2014-08-16 22:52:26
【问题描述】:

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

-(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 文件中也有协议。

如果有人知道发生了什么,我们将不胜感激。 (:

【问题讨论】:

  • 你有机会让它工作吗?我正遭受同样的问题。似乎因为某种原因没有设置碰撞类型。
  • 不,还没有,在任何地方都找不到答案):
  • 我想说的是,在您尝试设置碰撞类型之前,请确保您的精灵已正确分配。这就是我的问题。
  • 哇,这对我来说也是如此。非常感谢(:
  • 太好了,我在下面添加了它作为答案。接受这一点,以便其他有相同问题的人更容易。

标签: cocos2d-iphone collision-detection detection chipmunk


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    在您尝试设置碰撞类型之前,请确保您的精灵已正确分配。在我的类似案例中,这就是我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多