LibGDX Bullet 래퍼 사용에 대한이 블로그 게시물을 읽었습니다. http://blog.xoppa.com/using-the-libgdx-3d-physics-bullet-wrapper-part1/
ContactListener
콜백 사용에 대한 부분을 이해하는 데 문제가 있습니다. 충돌 콜백을 생성하려면 ContactListener
재정의 된 메서드로 클래스를 확장 한 다음 인스턴스화하기 만하면됩니다.
다른 작업은 수행 할 필요가 없습니다. 코드는 인스턴스를 다시 참조하지 않고도 완벽하게 작동합니다. 이것이 어떻게 가능한지?
그것은 뒤에서 일어나는 일들 때문입니다. 총알 래퍼는 JNI를 통해 총알을 호출합니다. 이것은 주로 CollisionJNI
많은 정적 메서드가 있는 클래스 를 통해 발생 합니다.
클래스 의 소스 를 ContactListener
보면 다음 생성자를 볼 수 있습니다.
public ContactListener() {
this(false);
if (!setEvents())
throw new com.badlogic.gdx.utils.GdxRuntimeException("Only one method per callback event can be overridden.");
enable();
}
...
public void enable() {
CollisionJNI.ContactListener_enable(swigCPtr, this);
}
보시다시피 (당신 ContactListener
이 그것을 확장하는 모든 서브 클래스를 인스턴스화 할 때 호출되는) 생성자는 enable()
JNI를 통해이 인스턴스를 콜백 리스너로 등록하는 것을 자동으로 호출 합니다.
여기에 흑 마법이 없습니다 : =)
더 편안하게 느껴질 경우 myContactListener.enable()
자신 에게 전화를 추가 할 수 있습니다 . 같은 방법으로 전화 myContactListener.disable()
를 걸어 전원을 끌 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다