2013-12-17 5 views
0

box2d과 cocos2d를 사용하면, 어떤 몸체가 공에 의해 "통과 가능"할 수있는 라인 또는 전체 (코딩 된 벡터로 이루어짐) 인 b2body 모델을 생성해야합니다. , 볼이 높은 속도로 그를 때릴 때.box2d에서 깨지는 벽

즉, 현실 세계와 마찬가지로 재질이 부드러워서 부러 질 수 있습니다.

밀도가 0이 아닙니다. 다른 방법이 있습니까?

감사합니다.

+0

대부분의 게임의 오늘 .....

내 게임 중 하나에서이 코드를 가지고 ... 비활성화 특정 값 세트 접촉보다는 강판이다 그들은 파열 될 수 있고 파멸을위한 다른 방법도 있습니다. 당신이 말하는 부분 벽과 같은 부분 벽의 경우, 조각으로 조각을 만들 필요가 있습니다. 스프라이트를 자르고 해당 부분에 다각형 충돌 영역을 만드십시오. – MahanGM

답변

0

왜 하나를 만드십시오 ????? 충돌로 인해 떨어질 벽돌 (작은 입자)을 사용하여 벽을 만드십시오. .....

이 기능을 사용하는 또 다른 방법은 contactListener의 presolve를 사용하는 것입니다. 두 몸체 사이의 충돌을 확인하고 if 그 개체를 골절 한 하나의 속도는 부서지기 쉬운 것들로

`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); 
      } 
     } 
    }  
관련 문제