2016-09-09 3 views
2

저는 안드로이드에서 압력에 민감한 게임을 개발 중입니다. (또는 다른 단어로 게임이 완료되었습니다.) 하지만 게임 엔진을 사용하기 시작하고 Libgdx를 사용하기로 결정했습니다. 그러나 GestureDetector.GestureListener 및 InputProcessor 인터페이스는 안드로이드 내부 MotionEvent에서 압력 매개 변수를 제공하지 않습니다. 수동으로 게임을 View.OnTouchListener로 설정하려고 시도했지만 스레딩 모델을 방해합니다 ...Libgdx가 터치 이벤트에 대한 압력을받습니다.

해결 방법에 대한 제안이 있으십니까?

답변

2

지금까지 알고있는 옵션은 getPressure()에서 MotionEvent까지입니다. 이 함수는 0에서 1 사이의 값을 float로 지정합니다. docs

참고 : 압력 센서가없는 장치는 접촉점 크기만큼 압력을 시뮬레이션합니다.

더 많은 압력은 손가락으로 덮힌 더 많은 화면 영역을 의미합니다..

setOnTouchListener은 당신에게 압력 값을 얻을 수있는 MotionEvent 개체를 줄 수 있습니다. 여기

someView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     float pressure = event.getPressure(); 
    } 
}); 
+0

들으 일반 MotionEvents에 관한하지만 Libgdx 함께 할 수 없다하지만 난 들으 어쨌든 –

+0

좋은 당신이 그것을 발견 내 질문에 대한 답을 찾을 수 있지만, MotionEvent가 Libgdx에 의해 압력을 시뮬레이션에 사용되지 않는 것을 의미하지 않는다 게다가 더 나은 방법을 커뮤니티와 공유해야합니다. 따라서 –

+0

을 좋아한다면 다음 질문에 답하십시오. 이미 해결책을 게시했습니다 :-) 및 MotionEvent가 사용되지 않는 시점까지 시뮬레이션 압력에 대한 Libgx : 나는 우리가 약간의 통신 문제가 있다고 생각합니다. Libgdx는 EventStructure에 압력 매개 변수/변수를 제공하지 않습니다. 즉, MotionEvents에서 Libgdx와 관련이없는 것을 의미합니다. Libgdx는 MotionEvents를 가져 와서 내부적으로 재구성하고 압력 정보를 제거합니다. 이것이 내가 수동으로 터치 리스너를 추가하고 수동으로 onTouch 이벤트를 호출 할 수있는 해결 방법이 필요한 이유입니다. –

2

게임 오브젝트

final MyGdxGame game = new MyGdxGame(); 

    View view = initializeForView(game, config); 
    view.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      getInput().onTouch(v, event); 
      game.setPressure(event.getPressure()); 
      Log.v("log", "hooked " + event.getPressure()); 
      return true; 
     } 
    }); 

트릭에 압력을 추가 내 코드의 일부입니다 것은 내가 onTouchListener을 덮어 쓰기 입력에 MotionEvent를 전달하기 위해 initializeForView를 호출해야한다는 것입니다 핸들러는 Libgdx입니다. 하지만 당신은 대답

+1

당신은 이것을 요청했습니다, 그러나 GestureDetector.GestureListener와 InputProcessor Interface는 안드로이드 내부 MotionEvent로부터 압력 매개 변수를 제공하지 않습니다. 어쨌든 잘 보니, 당신은 +1을했습니다. –

+0

thx는 제 질문과 관련하여 다소 불분명 한 것 같습니다 :-) –

+1

Q를 편집하고 거기에 코드를 입력하십시오. 대답이 아닌 여기에 – Infamous

관련 문제