Direction bei mehreren Tastendrücken berechnen

  • GM 8

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

  • Direction bei mehreren Tastendrücken berechnen

    Hallo Leute! Ich hänge da an einen kleinen Problem.

    Ich möchte dass man die "direction" zwischen 2 Tastenklicks berechnet.
    Das schaut volgendermaßen aus:

    Wir habne die 4 Pfeiltasten, rauf,rechts,unten und links. dabei ist rauf der Winkel 0, rechts der Winkel 90, unten sit 180 und links ist 270.

    Wenn ich nun rauf und links klicke, soll der Wert 215 rauskommen.
    Oder wenn ich unten rechts betätige, soll der Wert 135 rauskommen.

    Dies soll aber nicht vordefiniert sein (also NICHT if vk_up && vk_left){... ,usw...) sondern soll durch eine Formel oder Berechnung gelöst werden.

    Ich versuche schon länger deses Problem zu lösen, jedoch komme ich nicht auf irgendeine Formel die mir da weiterhelfen könnte.
    Habt ihr evtl Lösungen oder Ideen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()

  • Die beiden Winkel der jeweiligen Taste addieren und durch 2 teilen? Aber wie gesagt musst du trotzdem irgendwie darauf zugreifen was gedrückt wird bzw es in einer Var speichern.

    © 2008 by Teamgrill Productions
  • Danke für eure Hilfe!

    es gibt ja die 4 Pfeiltasten , wobei jed einen eigenen Winkel hat. ;)

    Das mit dem addieren und durch 2 teilen ist genial. Wie konnte ich nicht selber drauf kommen. XD

    Jedoch habe ich ein Problem.
    Die Pfeiltaste "oben" hat ja den Winkel 0.
    Wenn ich nun links (270°) und rauf(0°) drücke, dann addiert er ja (0+270)/2 = 135.

    Jedoch sollte 315 rauskommen. (Von der Logik her.) Das Problem ist ja das die "Pfeiltaste nach oben" gleichzeitig der Winkel 0 und 360 ist. wie könnte ich das Problem umgehen?
  • peini schrieb:

    Du kannst ja nicht direkt von einer Taste auf eine Gradzahl kommen.
    das geht sehr wohl:

    GML-Quellcode

    1. direction = (keyboard_check(vk_up)*360+keyboard_check(vk_right)*90+keyboard_check(vk_down)*180+keyboard_check(vk_left)*270)/(keyboard_check(vk_up)+keyboard_check(vk_right)+keyboard_check(vk_down)+keyboard_check(vk_left));

    da keyboard_check() true(=1) bzw. false (=0) zurück gibt, sollte es so gehen.
  • Der Code funktioniert! Jedoch ist da dieser besagte 0/360 Bug bei der oberen Pfeiltaste.
    Wenn ich oben und rechts betätige, kommt mir der Wert 225 raus.

    Ich musste den code noch ein wenig anpassen, da die Division durch 0 (wenn keine Taste gedrückt wird) einen error im GM verursachen:

    GML-Quellcode

    1. if (keyboard_check(vk_right)+keyboard_check(vk_down)+keyboard_check(vk_left) == 0){
    2. direction = 0;
    3. }else{
    4. direction = (keyboard_check(vk_up)*360+keyboard_check(vk_right)*90+keyboard_check(vk_down)*180+keyboard_check(vk_left)*270)/(keyboard_check(vk_up)+keyboard_check(vk_right)+keyboard_check(vk_down)+keyboard_check(vk_left));
    5. }
  • Benutzer online 1

    1 Besucher