virtuelles Steuerkreuz

  • Hi,
    ich bin gerade dabei ein 2D Spiel zu entwickeln. Ich will nun meinen Sprite durch Touch Events auf einem Steuerkreuz bewegen (z.B. wie beim Playstation Emulator). Wenn ein bestimmter Bereich innerhalb eines Kreises oder evtl Rechtecks gedrückt bleibt soll sich der Sprite sich mit einer entsprechenden Geschwindigkeit in Richtung x und y bewegen. Hat jmd ne Idee wie man sowas umsetzt ?
    Greetz

  • ich habe schon mit der onTouch Methode rumprobiert, aber mein Problem dabei ist, dass meine Bitmap sich nicht durchgehend bewegt sondern nur für jeden Touch einzeln (ich hoffe es ist verständlich was ich meine). mit Profit meinst du was ich erreichen will ? Ich hab mir das so vorgestellt, dass ich auf meinem Steuerkreuz für jede Richtung ein Rectangle habe und wenn ein Rectangle gedrückt wird, werden die Koordinaten der Bitmap solange in die jeweilige Richtung erhöht bis man den Finger wieder herunternimmt. Mein Problem ist dabei das die Koordinaten nur beim ersten Druck erhöht werden und nicht die gesamte Zeit während des Drückens.

  • Tschuldigung, konnte mir das nicht verkneifen, das is ne blöde Meme (bin wohl nen Kellerkind 8) )
    In dem Fall musst du für den Zeitraum zwischen dem EVENT_DOWN und EVENT_UP deine Action durchführen. Am besten definierst du dir ne Art Status Variable, die angibt, was du in deiner Hauptschleife tun musst. Das wäre am besten nen enum (oder nen int) mit den Stati:
    - nix tun
    - nach links scrollen
    - nach rechts scrollen
    - hoch scrollen
    - runter scrollen


    Ohne Meme sähe das wohl so aus:


    OnTouch abfangen
    - falls EVENT_DOWN: Koordinaten checken, Variable für entsprechenden State setzen (moveUp, moveDown, moveLeft, moveRight...was immer das Teil macht)
    - falls EVENT_UP: aktuellen State aufheben
    - falls EVENT_MOVE: Koordinaten neu checken, evtl. State aufheben oder ändern


    In der Hauptschleife:
    - State abfragen und entsprechend das Spiel ändern

  • ja so hat ichs eigentlich auch gemacht, es wird auch immer so lange ich auf einen Teil des Steuerkreuzes drücke dieser mit dem roten Rechteck übermalt und wenn ich loslasse ist es weg. gleichzeitig rufe ich eine ganz einfache Methode für meinen Sprite auf der seine Koordinaten während des drückens erhöht. Allerdings bewegt er sich total ungleichmäßig und hört irgendwann auf, aber das rechteck wird noch angezigt...

  • ok Fehler gefunden, hab gedacht onTouch läuft bei return true auch wie ne schleife und ich hab meine Bewegungsfunktion dort ausgeführt, jetzt hab ich sie wie du gesagt hast in der Hauptschleife und es läuft flüssig :) Thx, bist ja doch ganz schön sozial für en Kellerkind ;)

  • Thx, bist ja doch ganz schön sozial für en Kellerkind ;)


    hehe, offensichtlich ;)


    also in der API gibts die Funktionen getPressure() und getSize() bei nem MotionEvent (je fester der Druck, desto größer die Oberfläche vom Finger, die anliegt). Allerdings weiß ich nicht, ob alle Telefone das unterstützen und wie fein das abgestuft ist.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!