Проблема с управлением двумя джойстиками в Android
я занимаюсь разработкой игры с двумя джойстиками в Android. Стоит сказать, что я новичок в этом движке, поэтому могу не понимать некоторые его аспекты. Ну вот, джойстики управляются по отдельности идеально, но стоит мне зажать их одновременно, продолжает работать только первый. Я так понимаю, проблема может быть с мультитачем, но, как мне кажется, она должна была решиться добавлением методов с POINTER, в итоге не помогло. Вот код:
@Override
public boolean onTouchEvent(MotionEvent event) {
int actionMask = event.getActionMasked();
int IdJoystick_1 = event.getPointerId(0);
int IdJoystick_2 = event.getPointerId(0);
int pointerIndex_1 = event.findPointerIndex(IdJoystick_1);
int pointerIndex_2 = event.findPointerIndex(IdJoystick_2);
switch(actionMask) {
case MotionEvent.ACTION_DOWN:
if (joystick.isPressed((double) event.getX(pointerIndex_1), (double) event.getY(pointerIndex_1))) {
Log.d("MyTag", "Первое касание джойстика 1");
joystick.setIsPressed(true);
}
if (joystick_2.isPressed_2((double) event.getX(pointerIndex_2), (double) event.getY(pointerIndex_2))) {
Log.d("MyTag", "Первое касание джойстика 2");
joystick_2.setIsPressed_2(true);
}
return true;
case MotionEvent.ACTION_POINTER_DOWN:
if (joystick.isPressed((double) event.getX(pointerIndex_1), (double) event.getY(pointerIndex_1))) {
Log.d("MyTag", "Второе касание джойстика 1");
joystick.setIsPressed(true);
}
if (joystick_2.isPressed_2((double) event.getX(pointerIndex_2), (double) event.getY(pointerIndex_2))) {
Log.d("MyTag", "Второе касание джойстика 2");
joystick_2.setIsPressed_2(true);
}
return true;
case MotionEvent.ACTION_MOVE:
if (joystick.getIsPressed()) {
Log.d("MyTag", "Джойстик 1 перемещается");
joystick.setActuator((double) event.getX(pointerIndex_1), (double) event.getY(pointerIndex_1));
}
if (joystick_2.getIsPressed_2()) {
Log.d("MyTag", "Джойстик 2 перемещается");
joystick_2.setActuator_2((double) event.getX(pointerIndex_2), (double) event.getY(pointerIndex_2));
}
return true;
case MotionEvent.ACTION_UP:
joystick.setIsPressed(false);
joystick.resetActuator();
joystick_2.setIsPressed_2(false);
joystick_2.resetActuator_2();
Log.d("MyTag", "Джойстик 1, 2 отпущены");
return true;
case MotionEvent.ACTION_POINTER_UP:
joystick.setIsPressed(false);
joystick.resetActuator();
joystick_2.setIsPressed_2(false);
joystick_2.resetActuator_2();
Log.d("MyTag", "Джойстик 1, 2 снова отпущены");
return true;
}
return super.onTouchEvent(event);
}