Gamepad Probleme

  • GM 7

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

  • Gamepad Probleme

    Ich habe gleich mehrere kleinere und größere Probleme mit meinem Gamepad. Der Code fragt sowohl die Tastatur als auch die Pads ab (Dank an MewX an dieser Stelle):

    Step:

    Spoiler anzeigen

    GML-Quellcode

    1. for (i=1;i<3;i+=1)
    2. {
    3. if (joystick_xpos(i) >= 0.7 or keyboard_check(vk_right)) {
    4. direction=0
    5. speed=4;
    6. sprite_index=spr_o;
    7. image_speed=1;
    8. break;
    9. }
    10. if (joystick_xpos(i) <= -0.7 or keyboard_check(vk_left)) {
    11. direction=180
    12. speed=4;
    13. sprite_index=spr_w;
    14. image_speed=1;
    15. break;
    16. }
    17. if (joystick_ypos(i) >= 0.7 or keyboard_check(vk_down)) {
    18. direction=270
    19. speed=4;
    20. sprite_index=spr_s;
    21. image_speed=1;
    22. break;
    23. }
    24. if (joystick_ypos(i) <= -0.7 or keyboard_check(vk_up)) {
    25. direction=90
    26. speed=4;
    27. sprite_index=spr_n;
    28. image_speed=1;
    29. break;
    30. }
    31. }
    Alles anzeigen


    Das funktioniert auch so weit gut. Die Spielfigur hat Animationen in vier Richtungen, je aus 16 Frames, wobei 0 das Stehen ist. Ebenfalls im Step, aber vor der Tastenabfrage, wird ermittelt, ob das letzte Bild erreicht ist und dann auf Bild 1 statt 0 umgeschaltet. Das sieht dann so aus:

    Spoiler anzeigen

    GML-Quellcode

    1. if sprite_index=spr_s
    2. {
    3. if image_index = 15
    4. {
    5. image_index = 1
    6. }
    7. }
    8. if sprite_index=spr_o
    9. {
    10. if image_index = 15
    11. {
    12. image_index = 1
    13. }
    14. }
    15. if sprite_index=spr_n
    16. {
    17. if image_index = 15
    18. {
    19. image_index = 1
    20. }
    21. }
    22. if sprite_index=spr_w
    23. {
    24. if image_index = 15
    25. {
    26. image_index = 1
    27. }
    28. }
    Alles anzeigen


    Ich muss das vorher machen, weil er sonst nicht richtig umschaltet, also Frame 0 mit nimmt und dies dann immer wie ein zuckeln und ruckeln aussieht. Damit kommen wir schon zu Problem 1:

    Bei der Gamepadsteuerung überspringt er Frame 0 nicht und ich verstehe nicht warum. Ich habe den oben stehenden Code schon in Step End, Step Beginn, direkt in die Abfrage etc. kopiert, aber es hilf nichts. :S

    Problem 2:

    Ich habe aktuell zwei Tasten belegt ( mit joystick_check_button(i,1) bzw. joystick_check_button(i,2) ). Taste 1 soll einfach nur die Figur auf Startposition bringen, was auch funktioniert. Taste 2 soll den Raum neu Starten, ein Leben und Geld abziehen. Das funktioniert auch, aber anscheinend löst er dies mehrfach hintereinander aus, so dass ich sofort tot bin (keine Punkte oder Leben mehr) und ich nur noch Game Over sehe. 8|

    Hat da jemand eine Idee?

    Edit: Problem 2 habe ich eben selber gelöst. Tastenabfrage in End Step rein und beim Neustart einen Alarm eingestellt der für 350 Millisekunden alles einfriert. Funktioniert jetzt sehr gut.

    Problem 3: Wenn ich den Ausgang erreiche, wird eine Animation abgespielt und die Figur soll stehen bleiben. Da sperre ich auf der Tastatur die Eingabe. Wie kann ich das beim Gamepad machen?

    Lieben Dank an alle Helfer,

    Yamm

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Yamm ()

  • zu problem 1:
    habs mir jetzt nicht genau angesehen. aber möglicherweise liegt es daran, dass der joystick bzw. das steuerkreuz des gamepads nie genau auf null kommt, da es drucksensitiv ist. also nicht nur zwischen 0 und 1 umschaltet, sondern von 0 bis 1 interpoliert. falls diese toleranz das problem wäre, lass deine figur bei zb. 0.3 stehen anstatt bei 0. aber das problem liegt vermutlich wo anders.

    zu problem 3:
    binde eine variable ein, die sagt, ob das gamepad aktiv ist oder nicht. wenn du den ausgang erreichst, setzt du var_gamepad auf 0;

    GML-Quellcode

    1. if (var_gamepad = 1) {führe die gamepad abfragen aus} else {oder eben auch nicht}
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • @peini: Problem 2 ist bereits gelöst, aber Danke.
    falls diese toleranz das problem wäre, lass deine figur bei zb. 0.3 stehen anstatt bei 0. aber das problem liegt vermutlich wo anders.
    Wie oben beschrieben, steht bei mir schon 0.7. Habe es aber jetzt mal mit 0.3 und 0.9 versucht, besser wird es nicht. :(

    GML-Quellcode

    1. if (var_gamepad = 1) {führe die gamepad abfragen aus} else {oder eben auch nicht}


    Ach bin ich blöd! So eine Variable habe ich sogar schon: global.freude (damit steuer ich auch die Animation)

    ...

    Problem 3 wurde hiermit gelöst, fehlt nur noch Problem 1. Danke!
  • copyboy schrieb:

    Vielleicht versuchst du es mal mit dem Animation End Event.
    Also image_index = 1; oder etwas in der Art.
    Erst einmal: danke für den Tipp. Da merke ich, dass ich eigentlich nur an der Oberfläche von GM herum kratze. Animation End funktioniert sogar, allerdings auch nur bei der Tastatur. Beim Gamepad habe ich wieder ein ruckeln. Sprich: Frame 0 wird einfach nicht übersprungen. :(