2014-04-16 142 views
0

在我的遊戲中的某些點,我想要一噸球落在屏幕上。一旦他們碰到地面並彈起一點,我希望他們坐在那裏,不再需要他們移動。如何銷燬SKPhysicsBody?

一旦我得到200個物理實體,遊戲變得非常緩慢,所以我想摧毀屍體。以下是我試圖在我的代碼:

-(void)didBeginContact:(SKPhysicsContact *)contact { 

    if (contact.contactPoint.y < 150) { 
     if (contact.bodyA.categoryBitMask == MYPhysicsCategoryBall) { 
      NSLog(@"body a is ball"); 
      contact.bodyA = nil; 
     } 

     if (contact.bodyB.categoryBitMask == MYPhysicsCategoryBall) { 
      NSLog(@"body b is a weapon"); 
     } 
} 

這是不行的,因爲contact.bodyA和contact.bodyB都是隻讀的,所以我必須要解決這個問題,但除此之外,將只設置實際的物理機構無法將其摧毀並使物理模擬器運行得更快?還是有更好的方法來解決性能問題?我希望能夠添加超過200個球,也許500或600

回答

3

使用contact.bodyA.node.physicsBody

-(void)didBeginContact:(SKPhysicsContact *)contact { 

    if (contact.contactPoint.y < 150) { 
     if (contact.bodyA.categoryBitMask == MYPhysicsCategoryBall) { 
      NSLog(@"body a is ball"); 
//   contact.bodyA = nil; 
      contact.bodyA.node.physicsBody = nil; 
     } 

     if (contact.bodyB.categoryBitMask == MYPhysicsCategoryBall) { 
      NSLog(@"body b is a weapon"); 
     } 
} 

我沒有測試它雖然

+1

我只是測試它。它完美的作品。 +1 – sangony