Umgang mit Multitouch in libgdx

8

Okay, also habe ich versucht, eine Multitouch-Lösung für mein libgdx-Spiel zu implementieren und einige Probleme zu haben. Im Grunde habe ich ein dpad im unteren linken Quadranten des Bildschirms, der die Richtung meines Charakters steuert und auf dem restlichen Teil des Bildschirms Swipes verarbeiten will, um den Charakter springen, schlagen oder etwas auf den Feind werfen zu lassen. Ich habe ursprünglich überlegt, Schleuder in GestureListener zu verwenden. Ich habe aber inzwischen erfahren, dass Schleudern in Multitouch nicht unterstützt wird und habe seither damit begonnen, Pan zu verwenden, um die Wipes zu erkennen. Das Problem, das ich gerade habe, ist, dass, wenn ich einen Finger auf dem Bildschirm habe, während ich einen Swipe benutze (der Spieler bewegt sich und versucht zu springen), der Zeiger zum Pan Stop scheint inkorrekt zu sein (zumindest auf meinem Logging und Verständnis der Implementierung) Wie auch immer, hier ist der Code unten und ein Link zu den Dokumenten zum Gesten-Detektor hier Wenn jemand mithelfen kann zu erklären, was vor sich geht, wäre es sehr zu schätzen.

%Vor%

Nun ist dies der relevante Code um zu erkennen, welche Aktionen ausgeführt werden sollten (directionPointer und actionPointer sind global ints initialisierte ad -1 ) Das Problem ist, dass der von panStop zurückgegebene Zeiger nicht so ist, wie ich es erwartet habe verschiedene Touch-Aktionen, um zu zeigen, was passiert:

Fall 1: Halten Sie die untere linke Ecke des Bildschirms (Bob bewegt sich nach links):

%Vor%

case2 wischen nach oben (bob springt)

%Vor%

Fall 3 bewegen und springen (hier ist das Problem):

%Vor%

jetzt die letzte Zeile, obwohl ich es Ihnen nicht beweisen kann, ist das Problem, wie der Finger, den ich schwenken wird als der Aktionszeiger registriert wird der Zeiger für die Richtung (die den Bildschirm nicht verlässt) ist der zurückgegebene. Kann jemand darauf hinweisen, was ich falsch mache oder wenn das ein Fehler mit libgdx selbst ist oder der wahrscheinlichere Code selbst

'

    
brendosthoughts 05.08.2014, 19:06
quelle

1 Antwort

1

Was Sie tatsächlich tun könnten, ist, dass das DPAD ein mit einer Bühne verbundener Akteur ist, während die Bildschirmsteuerelemente mit einem InputProcessor oder GestureListener behandelt werden und einen InputMultiplexer verwenden, um sie zu kombinieren:

%Vor%

Auch wenn ich mich nicht irre, zählt die Reihenfolge der Parameter, die an den InputMultiplexer gesendet werden, als Prioritäten. Das bedeutet, dass im obigen Fall die Stufe (DPAD) priorisiert werden würde, bevor die Steuerung auf dem Bildschirm erfolgt. In deinem Fall würdest du sie wahrscheinlich wechseln wollen.

Ich bin mir bewusst, dass dies keine gute Lösung für dich ist, aber ich habe es in einigen meiner Spiele so gemacht.

    
Nine Magics 06.08.2014 09:37
quelle

Tags und Links