2013-12-17 20 views
0

使用box2d和cocos2d,我需要創建一些b2body模型,其中該主體將是一個線或一個整體(由具有編碼的向量組成),可以通過球「可傳遞」 ,當球高速擊中他時。box2d中的易破牆

所以,換句話說,就像在現實世界中一樣,材料應該柔軟,可以被打破。

零密度不這樣做。 有沒有另外一種方法呢?

謝謝。

+0

的大多數遊戲今天易碎的東西,他們已經破裂對象它們可能會斷裂,還有不同的破壞方式。對於像你說的那樣的部分牆壁,你需要一塊一塊地做。只需切割精靈並在這些部分上製作多邊形碰撞區域。 – MahanGM

回答

0

爲什麼要一個?????使用磚塊(較小的粒子),使牆壁碰撞會碰壁.....

獲得此功能的另一種方法是使用contactListener的presolve ....在那裏檢查兩個物體之間的碰撞,如果一個的速度比磨碎器禁用某個值組接觸...

從我的遊戲之一把這個代碼.....

`enter code here`if ((userDataObjectA.userDataType == kObjectTypeMotherShip || userDataObjectB.userDataType == kObjectTypeMotherShip) && (userDataObjectA.userDataType == kObjectTypeSaucer || userDataObjectB.userDataType == kObjectTypeSaucer)) { 
     b2WorldManifold worldManifold; 
     contact->GetWorldManifold(&worldManifold); 
     if (userDataObjectA.userDataType == kObjectTypeSaucer) { 
      b2Vec2 saucerVelocity = bodyA->GetLinearVelocity(); 
      if (saucerVelocity.y > 2) { 
       contact->SetEnabled(false); 
      } 
     } else if (userDataObjectB.userDataType == kObjectTypeSaucer) { 
      b2Vec2 saucerVelocity = bodyB->GetLinearVelocity(); 
      if (saucerVelocity.y > 2) { 
       contact->SetEnabled(false); 
      } 
     } 
    }