2017-01-28 3 views
-1

나는 Libgdx box2d를 사용하고 있는데, Libgdx와는 달리 body 사이의 충돌을 지속적으로 확인해야합니다. 및 endContact() 만 가지고있는 ContactListener을 구현해야합니다. rectangle.overlaps(rect1)을 box2d에서 구현할 수 있습니다. 나는 언제나 시작하거나 끝날 때뿐만 아니라 충돌을 항상 감지하고 싶다.Box2d 본문 간의 충돌을 어떻게 지속적으로 확인합니까?

+0

beginContact와 endContact 사이에 항상 충돌이 발생합니다. – luk2302

+0

@ luk2302하지만 beginContact에 뭔가를 추가하면 (예 : 문자열 출력). 문자열은 충돌이 시작될 때마다 출력되며 충돌 중에는 출력되지 않습니다. –

+0

논리가없는 경우 : 예. 그러나 "isColliding"과 같은 플래그를 true로 설정하면 모든 게임 틱에서 해당 플래그를 확인하고 이에 따라 응답하면됩니다. 충돌 확인은 비용이 많이 듭니다. – luk2302

답변

1

모든 프레임을 확인할 필요가 없습니다. 접촉이 이루어지고 접촉이 끝나면 부울을 설정하십시오.

public class MyBody { 
    private boolean colliding; 

    //... 

    public void update() 
    { 
     if (beginContact()) colliding = true; 
     else if (endContact) colliding = false; 

     if (colliding) 
     { 
      System.out.println("I am colliding..."); 
     } 
     else 
     { 
      System.out.println("I am not colliding..."); 
     } 
    } 
} 
관련 문제