LibGDX Bullet 확장의 ContactListener는 어떻게 작동합니까?

twiz

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

LibGDX Bullet 확장의 ContactListener는 어떻게 작동합니까?

분류에서Dev

xsd : any ## other는 확장의 일부일 때 어떻게 동작합니까?

분류에서Dev

bash 루프는 어떻게 정확하게 작동합니까?

분류에서Dev

물리적 주소 확장-가상 주소는 어떻게 작동합니까?

분류에서Dev

물리적 주소 확장-가상 주소는 어떻게 작동합니까?

분류에서Dev

Systemd : 하나의 장치가 작동하지 않는지 어떻게 확인합니까?

분류에서Dev

NSUbiquitousKeyValueStore의 내부 동기화는 어떻게 작동합니까?

분류에서Dev

PhantomData는 Rust에서 정확히 어떻게 작동합니까?

분류에서Dev

프록시는 정확히 어떻게 작동합니까?

분류에서Dev

AudioRecord 클래스는 정확히 어떻게 작동합니까?

분류에서Dev

DNS는 정확히 어떻게 작동합니까?

분류에서Dev

DNS는 정확히 어떻게 작동합니까?

분류에서Dev

NOT EXISTS는 SQL에서 정확히 어떻게 작동합니까?

분류에서Dev

이 for / in 루프는 정확히 어떻게 작동합니까?

분류에서Dev

도커는 정확히 어떻게 작동합니까? (이론)

분류에서Dev

sockaddr_storage는 정확히 어떻게 작동합니까?

분류에서Dev

장치 삭제는 실제로 어떻게 작동합니까?

분류에서Dev

확장자가없는 이미지의 파일 유형을 어떻게 알 수 있습니까? 어떻게 작동합니까?

분류에서Dev

'확장'에 대한 동적 값을 제공하려면 어떻게해야합니까? (또는 '이 경우 확장은 어떻게 작동합니까'?)

분류에서Dev

Libgdx box2d ContactListener는 매우 결함이 있습니다.

분류에서Dev

Turing Machine의 매크로는 정확히 어떻게 작동합니까?

분류에서Dev

Svelte에서`on : click`의`:`는 어떻게 작동합니까?

분류에서Dev

Android : AsyncTask의 execute () 메서드는 어떻게 작동합니까?

분류에서Dev

JavaScript의지도에서 Array ()는 어떻게 작동합니까?

분류에서Dev

비용의 X * theta는 어떻게 작동합니까?

분류에서Dev

JS의 Spread / rest 연산자는 어떻게 작동합니까?

분류에서Dev

BitBake의 변수 범위는 어떻게 작동합니까?

분류에서Dev

SignInManager의 CanSignInAsync (xyz) 메서드는 어떻게 작동합니까?

분류에서Dev

gridExtra :: tableGrob의 vp 인수는 어떻게 작동합니까?

Related 관련 기사

  1. 1

    LibGDX Bullet 확장의 ContactListener는 어떻게 작동합니까?

  2. 2

    xsd : any ## other는 확장의 일부일 때 어떻게 동작합니까?

  3. 3

    bash 루프는 어떻게 정확하게 작동합니까?

  4. 4

    물리적 주소 확장-가상 주소는 어떻게 작동합니까?

  5. 5

    물리적 주소 확장-가상 주소는 어떻게 작동합니까?

  6. 6

    Systemd : 하나의 장치가 작동하지 않는지 어떻게 확인합니까?

  7. 7

    NSUbiquitousKeyValueStore의 내부 동기화는 어떻게 작동합니까?

  8. 8

    PhantomData는 Rust에서 정확히 어떻게 작동합니까?

  9. 9

    프록시는 정확히 어떻게 작동합니까?

  10. 10

    AudioRecord 클래스는 정확히 어떻게 작동합니까?

  11. 11

    DNS는 정확히 어떻게 작동합니까?

  12. 12

    DNS는 정확히 어떻게 작동합니까?

  13. 13

    NOT EXISTS는 SQL에서 정확히 어떻게 작동합니까?

  14. 14

    이 for / in 루프는 정확히 어떻게 작동합니까?

  15. 15

    도커는 정확히 어떻게 작동합니까? (이론)

  16. 16

    sockaddr_storage는 정확히 어떻게 작동합니까?

  17. 17

    장치 삭제는 실제로 어떻게 작동합니까?

  18. 18

    확장자가없는 이미지의 파일 유형을 어떻게 알 수 있습니까? 어떻게 작동합니까?

  19. 19

    '확장'에 대한 동적 값을 제공하려면 어떻게해야합니까? (또는 '이 경우 확장은 어떻게 작동합니까'?)

  20. 20

    Libgdx box2d ContactListener는 매우 결함이 있습니다.

  21. 21

    Turing Machine의 매크로는 정확히 어떻게 작동합니까?

  22. 22

    Svelte에서`on : click`의`:`는 어떻게 작동합니까?

  23. 23

    Android : AsyncTask의 execute () 메서드는 어떻게 작동합니까?

  24. 24

    JavaScript의지도에서 Array ()는 어떻게 작동합니까?

  25. 25

    비용의 X * theta는 어떻게 작동합니까?

  26. 26

    JS의 Spread / rest 연산자는 어떻게 작동합니까?

  27. 27

    BitBake의 변수 범위는 어떻게 작동합니까?

  28. 28

    SignInManager의 CanSignInAsync (xyz) 메서드는 어떻게 작동합니까?

  29. 29

    gridExtra :: tableGrob의 vp 인수는 어떻게 작동합니까?

뜨겁다태그

보관