-(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文件中有协议。
如果有人知道发生了什么帮助将不胜感激。 (:
答案 0 :(得分:1)
首先,两个机构是否在同一个CCPhysicsNode下?
其次,ccPhysicsCollisionBegin只是在碰撞BEGIN时被调用,因为你的两个身体都是一个在另一个身上,并且由于重力,它们将一起移动,因为它们开始碰撞,所以碰撞永远不会开始。碰撞评估的周期是:
ccPhysicsCollisionBegin:一旦两个身体开始碰撞就被召唤 ccPhysicsCollisionPreSolve:在物理计算之前调用每帧更新 ccPhysicsCollisionPostSolve:在物理计算后调用每一帧 ccPhysicsCollisionSeparates:一旦分开就调用
答案 1 :(得分:0)
在尝试设置collisionType之前,请确保正确分配了精灵。在我的类似案例中,这对我来说是个问题。