Joystick Programmieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Joystick Programmieren

    Hi,
    ich weiß nicht ganz, wie ich den Titel nennen soll aber ich glaube es kommt ran. Ich habe eine App, die steuert ein Auto mittels Bluetooth und RFDuino. Das läuft derzeit mittels Buttons. Nicht gerade Schick und vor allem sau schwer zu steuern. Meinen Projektmitgliedern ist eine tolle neue Steuerung eingefallen, der Haken ist nur, dass ich sie umsetzten muss :D

    Ich habe mal ein Bild angehangen. Ich hoffe, ihr versteht was die meint. Der Punkt, gibt immer an, wo man gerade ist. Zwischen den Kreisen kann man hin und her wechseln. Dies gibt die Geschwindigkeit an. Ein Stufenloser Übergang wäre schick aber in Stufen ginge auch. Wenn man den Punkt nach Links bzw. Rechts bewegt soll das Auto auch nach Links bzw. Rechts. Auch hier wieder Stufenlos wäre schick, wenn nicht ist es eben halt so.

    Da meine beiden Kommilitonen gut reden haben aber keine Ahnung von iOS-Apps darf ich das wie gesagt umsetzten - nur habe ich keine große Idee wie.

    Ich hab mal etwas gegoogelt, ob es sowas schon gibt. Ich habe nur sowas hier gefunden: cocoacontrols.com/controls/swift-spritekit-analog-stick

    Das es Swift ist, ist ja nicht das Problem aber es hat nicht die Stufen und ist irgendwie anders aufgebaut, als wir wollen.

    Also habe ich mal etwas gegoogelt. Aber nichts so richtig gefunden. Kann man das nicht ohne SpriteKit machen? Wie würdet Ihr denn Vorgehen? SpriteKit ist ja mehr so für Spiele und damit hatte ich mich nie beschäftigt.

    Viele Grüße und Danke
    Nils
    Dateien
    • IMG_0101.JPG

      (373,95 kB, 335 mal heruntergeladen, zuletzt: )
  • ich denke das Bild soll auf dem Screen dargestellt werden und der Punkt mit dem Finger verschoben?

    1. mache einen eigenen View der die Ringe malt
    2. und die Koordinaten des Fingers nimmt:
    a) rechne sie relativ zum Mittelpunkt um
    b) rechne den Abstand zum Mittelpunkt aus (Wurzel aus delta-x^2 + delta-y^2) - falls nötig kannst Du Stufen einbauen
    c) rechne mit atan2(delta-x, delta-y) den Winkel aus
  • Ich habe einmal eine ähnliche UI für die Auswahl einer Farbe geschrieben (siehe Anhang). Letztlich ist der Marker eine eigene View, der mittels UIGestureRecognizer auf Touches reagiert. Etwas so in der Art:

    Quellcode

    1. UITapGestureRecognizer* oneFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectColorAtTouch:)];
    2. [oneFingerTap setNumberOfTapsRequired:1];
    3. [oneFingerTap setNumberOfTouchesRequired:1];
    4. [self.gridView addGestureRecognizer:oneFingerTap];
    5. UIPanGestureRecognizer* oneFingerDrag = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(selectColorAtTouch:)];
    6. [oneFingerDrag setMaximumNumberOfTouches:1];
    7. [oneFingerDrag setMinimumNumberOfTouches:1];
    8. [self.gridView addGestureRecognizer:oneFingerDrag];
    So lässt sich der Marker verschieben oder per Tap setzen.

    HTH, Mattes
    Dateien
    • IMG_1766.PNG

      (109,93 kB, 168 mal heruntergeladen, zuletzt: )
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • So: Ich hab diese Woche das Ganze hinbekommen. Ich hab mittels UIBezierPath jeweils die Kreise gemalt. Dann habe ich mir noch durchsichtige Kreise gemalt, damit ich für vorwärts, rückwärts etc. einen Toleranzbereich habe. Dann habe ich mich wie by @MyMattes gesagt hat für die Gesten registriert und dann die UIBezierPath mittels "containsPoint" abgefragt. Läuft.