В настоящее время я работаю над игрой, в которой пользователь управляет кораблем с помощью экранного джойстика в левой части экрана и стреляет, касаясь правой стороны экрана. Однако мои попытки мультитач не увенчались успехом. Когда пользователь сначала касается джойстика, а затем стреляет, он работает отлично, но когда пользователь касается джойстика во время стрельбы, пользователь не может перетащить джойстик. Я все еще новичок в Android, поэтому любая помощь будет принята с благодарностью. Я вставлю код ниже.
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex=(event.getAction()&MotionEvent.ACTION_POINTER_ID_MASK)
>>MotionEvent.ACTION_POINTER_ID_SHIFT;
int pI = event.getPointerId(pointerIndex);
//On screen joystick
if(event.getX(pI)<pad.getWidth()+(screenWidth*.18)&&event.getX(pI)>0&&event.getY(pI)<(screenHeight)&&event.getY(pI)>(screenHeight-(0.42*screenHeight))){
sx2=event.getX(pI)-(stick.getWidth()/2);
sy2=event.getY(pI);
angle=(Math.atan2((sy2-sy),(sx2-sx)));
}
//firing system
if(event.getX(pI)>screenWidth/3){
switch(action){
case MotionEvent.ACTION_DOWN:
incrementRunnable.run();
break;
case MotionEvent.ACTION_POINTER_DOWN:
incrementRunnable.run();
break;
case MotionEvent.ACTION_UP:
handler.removeCallbacks(incrementRunnable);
break;
case MotionEvent.ACTION_POINTER_UP:
handler.removeCallbacks(incrementRunnable);
break;
}
}
//reset joystick
if(event.getAction()==MotionEvent.ACTION_UP||event.getAction()==MotionEvent.ACTION_POINTER_UP){
sx2=sx;
sy2=sy;
handler.removeCallbacks(incrementRunnable);
}
return true;
}