Mathematische Berechnung Swipe

  • Folgendes bezieht sich auf Entwicklung fürs Smartphone. Die mathematische Lösung ist sicherlich auch gleich wenn man es mit der Maus macht.
    Der Einzige Unterschied ist warscheinlich die Event Funktion wegen (nach meiner Einschätzung) InputTouch Pressed und Released.


    Ich bin schon soweit dass mein BP erkennt ob ich mit den Fingern nach rechts, links, oben oder unten swipe (wische).
    Wenn ein Actor angeklickt wird, geschieht auch etwas.


    Ich möchte aber nun dass etwas geschieht wenn man durch den Actor streicht und NICHT wenn er angeklickt wird.


    Ich schätze dass ich die Actor Location dafür brauche (kein Problem) und die Location von meinem Finger. Finger Location also von Pressed und Released.


    Mit welchen Methoden bekomme ich heraus wann mein Finger also angefangen zu drücken und wann aufgehört hat?
    Edit: Drücken und aufhören des Drückens plus in Variablen abspeichern hat sich erledigt


    Und welches Event muss ich im Actor benutzen? Event BeginInputTouch gilt ja sicherlich nur wenn es tatsächlich berührt wird...

  • Also ich weiß jetzt nicht ob ich dir mit dieser Info einen Gefallen tue oder doch zu sehr verwirre.
    Unter iOS sind die drei Touch-Event Handling Methoden:


    - (void)touchesBegan: <- Das Event läuft sobald dein Finger das Display berührt
    - (void)touchesMoved: <- Das Event läuft nur, wenn dein Finger in Bewegung ist / nicht wenn der Finger steht.
    - (void)touchesEnded: <- Das Event läuft einmal durch wenn du deinen Finger vom Display nimmst.
    - (void)touchesCancelled: <- Das Event läuft einmal durch, wenn du die Eingabe unterbrichst


    Achtung: Reines iOS !


    In deinem Fall wäre es das Event touchesMoved, in der du alle nodes (Actor) in ein array schreiben lässt die du überstreichst/berührst.
    Soll am Ende z.B. die Anzahl der überstrichenen Objekte angezeigt werden, durchsuchst du das Array im Event touchesEnded.


    Soll z.B. der überstrichene Luftballon sofort platzen dann ließt du das Array unter touchesMoved ständig aus oder performanter - nur dann wenn sich das Array um eins erhöht hat und läßt den Luftballon (Actor) platzen.


    Infos:
    https://developer.apple.com/li…ultitouch_background.html

  • Ich glaube ich habe mich falsch ausgedrückt. Ich weiß wohl wie ich einen Actor in einen Array schreibe, aber mein Actor wird zufällig gespawnt und ich weiß nicht wie ich erkennen lasse ob der Actor der gespawnt wurde, sich in der "Linie" befand die ich mit meinem Finger "gezogen habe"

    • Offizieller Beitrag

    Gehen wir mal davon aus, es sind 3 Ballons in einer Reihe und die ziehst von Links nach Rechts dein Finger über die Ballons. Dann berührst du praktisch alle 3 Ballons. Die Linie kann zwar gezeichnet dargestellt werden, aber fakt ist, du berührst alle Ballons und somit bräuchtest du nur ein BeginInputTouchEvent. Fals der so funktioniert. Da müsstest du dich nicht um eine Linie bemühen. Denn da müsste ich erst selber probieren, wie das gehen soll.

  • Es geht darum dass man den Bildschirm vorher berühren muss und beim streichen erst den Ballon erwischt. Habe nun erstmal ne mathematische Formel aufgestellt die errechnet wo der Actor ist, gewisse Werte drum herum errechnet um damit dann zu prüfen ob die Fingerbewegung vor, während und nach dem Ballon statt findet. Da es bei mir nen Unterschied macht ob von links nach rechts gestrichen wird, oder von oben nach unten usw. , habe ich etwas gebraucht für die Aufstellung dieser Berechnung.


    Aber ich hab gehofft dass dies auch einfacher geht.

  • Ja tut er. Aber dann kann ich den Touch ja nicht in dem Actor BP nutzen. Ist ja nicht weiter schlimm aber ich weiß nicht wie ich ich erkennen lasse dass zwischen TouchPressed und TouchReleased er einen Actor erkennt.
    Daher lasse ich einfach nen gewissen Radius um den Actor berechnen