2016-04-16 6 views
0

So habe ich 3 Rechtecke, die wie Tasten mit der Methode contains handeln. Die ersten beiden Tasten sind nur links und rechts, um das Zeichen zu bewegen, aber die dritte ist ein Sprung, wenn Benutzer TouchDown und dann wirft ein Ball wenn TouchUp. Mein Problem ist, dass diese durcheinander geraten, wenn die Tasten gleichzeitig berührt werden, wie wenn ich die Sprungtaste gedrückt halte und gleichzeitig die linke/rechte Taste halte und loslasse, wirft sie den Ball.LibGdx Multiple-Touch-Ereignisse Verwirrung

Ich weiß, dass es die Zeiger-ID-Sache gibt, aber es ist für mich verwirrend wie eine Hölle.

+0

Jede Berührung hat einen Zeigerindex. Wenn Sie die Methoden Gdx.input.getX() oder getY() verwenden, geben sie die letzte Berührung und nur die letzte Berührung zurück. Die letzte ** einzelne ** Berührung. – ossobuko

Antwort

0

ein neues InputProcessor zu Gdx.input.setInputProcessor Set() und prüfen, ob die Berührungspunkte in Ihrer Rechtecke enthalten sind, sollte in etwa so funktionieren:

 Gdx.input.setInputProcessor(new InputAdapter() { 
     @Override 
     public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
      if(leftRect.contains(screenX, screenY)){ 
       //move player left 
       return true; 
      } 

      if(rightRect.contains(screenX, screenY)){ 
       //move player right 
       return true; 
      } 

      return false; 
     } 

     @Override 
     public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
      if(jumpRect.contains(screenX, screenY)){ 
       //make player jump 
       return true; 
      } 
      return false; 
     } 
    }); 

ich Ihnen dringend empfehlen Scene2D zu verwenden für UI verwandte Sachen, es kann ein bisschen schwieriger zu beginnen mit, aber es wird Ihre UI-Codierung leichter zu implementieren und zu halten.

+0

Werden Sie diese Touch-Koordinaten unprojizieren? – ossobuko

+0

Vielen Dank! Ich dachte, dass ich die Multiple-Touch-Event-Behandlung von mir selbst mit der Pointer-ID-s machen musste, aber es stellte sich heraus, dass es standardmäßig fertig ist. – WannabeHacker

+0

Gut zu helfen, denken Sie daran, dass Touchpoints immer in Bildschirm-Pixel-Koordinaten sind, wie Ossobuko vorschlagen, müssen Sie möglicherweise die Koordinaten ausprojizieren, falls Sie keine pixelgenaue Kamera verwenden. –