libGDX 기반 14 게임 패드 사용

8128 단어 HTMLAndroidlibGDXJava
libGDX는 Windows, Linux, Mac, 안드로이드, 아이폰, HTML에 대응하는 크로스플랫폼 게임 라이브러리다.유명한 Ingress에서도 사용됩니다.유럽과 미국은 비교적 주류적인 곳이다.

게임 매트 쓰고 싶어요.


키보드, 마우스, 터치스크린 등도 게임을 할 수 있지만 액션 시스템은 물리적으로 게임에 적합한 인터페이스가 필요하고 게임 패드, 조종대 등 인터페이스도 대응해야 한다.
이번 해설은 그 방법을 사용했다.

대응 플랫폼


libGDX는 컨트롤러 확장이 있으며 대응하는 플랫폼은Desktop(Windows,Mac,Linux)과 안드로이드, 그리고 HTML입니다.현재 iOS가 지원되지 않습니다.
주변에 컴퓨터만 매트를 사용할 수 있기 때문에 데스톱으로만 해설을 한다.

일단 게임 매트의 동작을 확인합니다.


코드를 쓰기 전에 패드가 OS에 인식되었는지 확인해 보세요.
예를 들어 Windows의 경우 제어판을 통해 확인할 수 있습니다.

어떤 버튼을 누르면 어떻게 돌아가는지 미리 파악하세요.
이것은 PS2의 패드 변환기입니다.이 변환기가 비치는 단추는 아래와 같다.
맵은 오른쪽에 있는 4개의 단추입니다. 각각 1-4개의 단추입니다.
L2, R2, L1, R1은 버튼 5-8입니다.
시작 버튼과 선택 버튼은 각각 9와 10이다.
아날로그 로드의 압력은 버튼 11과 12이다.
X와 Y는 각각 -1, 0, 1, X축 0은 중성을, -1은 왼쪽을, 1은 오른쪽을 각각 숫자로 나타낸다.Y축에서 -1, 0은 Neutral이고 1은 아래입니다.
시뮬레이션 모드가 되면 왼쪽 시뮬레이션 로드의 입력이 가능하고 X와 Y는 -1에서 1 사이의 미묘한 수치가 나온다.
오른쪽 시뮬레이터가 좌우로 이동하면 Z축, 위아래로 이동하면 Z회전이 분배된다.하지만 Controller에서 볼 때 Z축만 정상적으로 얻을 수 있으니 오른쪽 아날로그를 무시하세요.

설정


libgdx의 gdx-setup.jar을 시작하면 콤보 상자에 사용할 확장을 설정할 수 있습니다.여기에 컨트롤러가 있습니다. 이 옵션을 선택하면 라이브러리는 끼워 넣는 형식으로 바로 사용할 수 있습니다.

설치된 상태에서build을 사용합니다.gradle에 따라 다음 줄을 추가합니다.
core의 의존점
compile "com.badlogicgames.gdx:gdx-controllers:$gdxVersion"
데스크톱의 의존점
compile "com.badlogicgames.gdx:gdx-controllers-desktop:$gdxVersion"
compile "com.badlogicgames.gdx:gdx-controllers-platform:$gdxVersion:natives-desktop"
ant 등이라면, 첨부된 extensions/gdx-controllers의 각종 설치를 추가하십시오.gdx-controllers.jar은 API 인터페이스이기 때문에, 이것을 코어 부분에 추가하십시오.

절차.


연결된 게임 매트 목록 가져오기

Array<Controller> controllers = Controllers.getControllers();

이름 가져오기

  String name = controller.getName();

십자키 상태 획득

//十字キーの左右(-1.0 ~ 1.0)
float axis = controller.getAxis(3);
if(Math.abs(axis) > 0.5f ){
    System.out.println("X="+axis);
}

//十字キーの上下(-1.0 ~ 1.0)
float axis = controller.getAxis(2);
if(Math.abs(axis) > 0.5f ){
    System.out.println("Y="+axis);
}
자신의 환경에서 3과 2는 각각 X축과 Y축이다.

버튼을 눌렀는지 확인하기

//1つ目のボタン
boolean isPress = controller.getButton(0);
if(isPress){
    System.out.println("1ボタン");
}

이벤트


이벤트에서 폴링 대신 검색하려면 다음을 선택합니다.Controller Adapter는 Controller Listener의 빈 구현입니다. 이벤트 처리를 하고 싶은 곳에서만 다시 쓰기를 계승하십시오.
controller.addListener(new ControllerAdapter(){

    @Override
    public boolean axisMoved(Controller controller, int axisIndex, float value) {
        System.out.println("axis "+axisIndex+"="+value);
        return true;
    }

    @Override
    public boolean buttonDown(Controller controller, int buttonIndex) {
        System.out.println("button down="+buttonIndex);
        return true;
    }

    @Override
    public boolean buttonUp(Controller controller, int buttonIndex) {
        System.out.println("button up="+buttonIndex);
        return true;
    }

});
플러그 패드를 꽂는 곳도 있지만 자신의 환경에서 활동하는 것은 가져갈 수 없다.
버튼 ID 등은 OUYA에서만 매핑할 준비가 되어 있습니다.

좋은 웹페이지 즐겨찾기