2014-03-18 38 views
1

首先我加入SpriteKit physicsBody效果失去

skView.showsPhysics = YES; 

要查看物理体电路。

我有松动的物理效果O_O ... 一个问题,我有球,其受重力影响而落下。

// Ball  
self.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.size.height/2]; 
     self.physicsBody.categoryBitMask = ballCategory; 
     self.physicsBody.contactTestBitMask = bottomCategory; 

而且我已经创建了一把底身体得到碰撞消息:

// Bottom edge 
    CGRect bottomRect = CGRectMake(self.frame.origin.x, self.frame.origin.y + 25, self.frame.size.width, 10); 
     SKNode* bottom = [SKNode node]; 
     bottom.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:bottomRect]; 
     [self addChild:bottom]; 

其彼此正确地互动之前,我加位掩码底边

bottom.physicsBody.categoryBitMask = bottomCategory; 
bottom.physicsBody.collisionBitMask = ballCategory; 

面具:

static const uint32_t ballCategory = 0x1 << 0; // 00000000000000000000000000000001 
static const uint32_t bottomCategory = 0x1 << 1; // 00000000000000000000000000000010 

它停止了工作。嗯...

我注释了分配面具底边 - 它的作品。 然后我分配到另一个底部边缘 - 球罩 - 它不再工作。

我想,我错过了文档中的一些东西,但现在我找不到答案为什么会发生。

enter image description here

回答

1
bottom.physicsBody.categoryBitMask = bottomCategory; 

这使得与机构,其contactBitMask包含bottomCategorybottom只接触/碰撞。

所以,如果你这个类别添加到你的球,他们应该再次与底部碰撞:

ball.physicsBody.contactTestBitMask = ballCategory | bottomCategory; 

欲了解更多详细信息,请参阅Box2D manual第7.2章 - 过滤

+0

5分钟后我发现我拼错了我的代码。通过键入contactTestBitMask - 我在自动完成出现时按Enter键,并将其转向collisionBitMask .... brrrr。但是,同意你的看法 – Injectios

相关问题