2014-03-18 42 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

相關問題