2016-11-29 4 views
0

내 게임 안드로이드 내 선수가 무적의 물건과 충돌하게하고 싶습니다. 이 충돌은 감지되어야하지만 실제로 플레이어를 중지 시켜서는 안됩니다. 그는 단지 "통과"할 수 있어야합니다. 나는 이것이 libgdx에서 가능하다고 확신하지만, 작동하지는 않는다. 튜토리얼을 사용했습니다. here물리적 응답이없는 Libgdx의 충돌 감지

방아쇠를 사용하고 싶습니다. 플래그를 btCollisionObject.CollisionFlags.CF_NO_CONTACT_RESPONSE으로 설정하면 캐릭터가 통과하지만이 위치가 저장되지는 ​​않습니다. 그렇다면이 정보가있는 이벤트는 어디에서 찾을 수 있습니까?

+0

그래서 귀하의 질문은 ContactListener을 구현하는 방법입니까? 이 튜토리얼을 보시오. https://xoppa.github.io/blog/using-the-libgdx-3d-physics-bullet-wrapper-part1/. 완전히 읽으십시오. – Xoppa

답변

-1

내 게임 안드로이드 내 선수가 invinsible> 개체와 충돌하게하고 싶습니다. 이 충돌은 감지되어야하지만 실제로 플레이어를 중지 시켜서는 안됩니다. 당신이 필요로하는 무엇

는 감지 할 수있는 Box2D의 센서 본체와 짝을 사용자 정의 ContactListener입니다. 플레이어는 또한 Box2D 바디입니다. 두 개의 본문 식별자를 UserData 형식 (예 : 간단한 문자열)으로 지정합니다. 그런 다음 ContactListener에서 이러한 UserDatas를 확인할 수 있습니다.

Fixture.setUserData(...) 

귀하의 ContactListener는 Box2D의 ContactListener를 구현하고 그 메소드를 오버라이드 (override) 할 :

public class MyContactListener implements ContactListener{ 
@Override 
public void beginContact(Contact contact) { 
    Fixture fa = contact.getFixtureA(); 
    Fixture fb = contact.getFixtureB(); 
    if(fa == null || fb == null) return; 
    // ... 
} 

@Override 
public void endContact(Contact contact) { 
    Fixture fa = contact.getFixtureA(); 
    Fixture fb = contact.getFixtureB(); 
    if(fa == null || fb == null) return; 
    // ... 
} 

@Override 
public void preSolve(Contact contact, Manifold oldManifold) {} 
@Override 
public void postSolve(Contact contact, ContactImpulse impulse) {} 

} 

Box2D의 본체와 센서 선언은 독자들에게 연습으로 남아 있습니다.

Box2D의를위한 초보자 튜토리얼은 여기에서 찾을 수 있습니다 : 는 http://rotatingcanvas.com/using-box2d-in-libgdx-game-part-i/