1

이 나는 ​​장면 곳에 일부가, 내가 여기에 문제가 ... 내 HelloWorldLayer.mm이 코드를 사용할 수있는 방법우리 응용 프로그램에서 void ContactListener :: PreSolve (b2Contact * contact, const b2Manifold * oldManifold) 메서드를 어떻게 사용할 수 있습니까?

void MyContactListener::PreSolve(b2Contact* contact, const b2Manifold* oldManifold) { 

    b2WorldManifold worldManifold; 

    contact->GetWorldManifold(&worldManifold); 

    b2PointState state1[2], state2[2]; 

    b2GetPointStates(state1, state2, oldManifold, contact->GetManifold()); 
    //NSLog(@"Presolving"); 

    if (state2[0] == b2_addState) 
    { 
     const b2Body* bodyA = contact->GetFixtureA()->GetBody(); 

     const b2Body* bodyB = contact->GetFixtureB()->GetBody(); 

     b2Vec2 point = worldManifold.points[0]; 

     b2Vec2 vA = bodyA->GetLinearVelocityFromWorldPoint(point); 

     b2Vec2 vB = bodyB->GetLinearVelocityFromWorldPoint(point); 

     b2Vec2 rV = vB - vA; 

     float32 approachVelocity = b2Dot(rV, worldManifold.normal); 

     if (-1.5f < approachVelocity && approachVelocity < 0.0f)  
     { 

      //MyPlayCollisionSound(); 
      NSLog(@"Not Playing Sound"); 

     } 
     else 
     { 
      NSLog(@"playing the sound"); 

     } 

    } 

} 

저를 도와주세요 내 응용 프로그램이 metnod를 사용하는 방법을 잘 모릅니다 바디가 떨어지고 정적 바디, 에지 모두 비슷하게 충돌합니다. b2ContactListener를 구현하고 연락처 정보를 확인하고 소리를 재생하는 틱 메소드 Im에서이 방법의 문제점은 바디가 정적 바디와 지속적으로 접촉 할 때 소리가 무한정 반복되어 소리가 울려 퍼지기 때문에 결국 나는 커다란 잡음이 난다. 이 상황을 피하려면 어떻게해야합니까?

나에게 도와주세요 감사합니다 ......

두 물체가 충돌 할 때, b2ContactListener 방법은 다음과 같은 순서로 호출됩니다

답변

1

방금 ​​업데이트 메소드에 다음 메소드를 사용하고 방침 업데이트 메소드 호출 전에 객체를 선언했습니다. 처럼

MyContactListener *contactListener; 

HelloWorldLayer.h

에서 그리고 HelloworldLayer.mm

에서 발생하지 이러한 유형의 오류보다

[self scheduleupdate]; 

contactListener=new MyContactListener(); 
world->setContactListener(contactListener); 

전에.

+0

좋아요. 시도 할 것입니다 ... –

0

: 당신이 시체의 충돌을 감지 할 경우에 따라서

BeginContact 

PreSolve 
PostSolve 
PreSolve 
PostSolve 
...etc 

EndContact 

각 충돌마다 한 번씩 BeginContact 또는 EndContact을 사용하십시오. 이 방법은 하나의 b2Contact 매개 변수만을 사용하기 때문에 계산시 oldManifold 값을 사용하지 않아도됩니다.

관련 문제