Spielfigur steckt fest sobald durch Gamepad bewegt

  • Allgemein

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

  • Spielfigur steckt fest sobald durch Gamepad bewegt

    Huhu :)

    Der Titel ist etwas seltsam, ja. Aber mein Problem tritt nur bei der Steuerung des Gamepads auf.
    Folgendes, ich möchte meine Spielfigur in Bewegung setzen und springen soll sie auch können. Aber seit dem ich von der Steuerung der Tastatur zur Steuerung über mein Gamepad "umgestiegen" bin, funktioniert der Code nicht mehr und ich verstehe nicht wie ich das umsetzen kann.

    Zuvor hatte ich es so gemacht:
    Spoiler anzeigen

    GML-Quellcode

    1. hspd -= hspd / 6;
    2. if (global.run2=1) and (keyboard_check(vk_rshift)) {myspeed=1.5} else {myspeed=1.0;}
    3. if (keyboard_check(vk_left)) {hspd -= myspeed;}
    4. if (keyboard_check(vk_right)) {hspd += myspeed;}
    5. repeat (abs(hspd)) {
    6. if (place_free(x + sign(hspd), y))
    7. x += sign(hspd);
    8. }
    9. if(global.run2=1) {
    10. if(hspeed > 12) {hspeed= 12;}
    11. if(hspeed < -12) {hspeed= -12;}
    12. }
    13. else {
    14. if(hspeed > 8) {hspeed= 8;}
    15. if(hspeed < -8) {hspeed= -8;}
    16. }
    17. //jump + doublejump
    18. if (global.jump2=1) {
    19. if (keyboard_check(vk_rcontrol)) {
    20. if !place_free(x,y + 1) {
    21. jumps+=1;
    22. vspeed = -18;}
    23. else if (keyboard_check_pressed(vk_rcontrol)) and double_jump = 1
    24. and (global.Djump2=1) {
    25. double_jump = 0;
    26. jumps+=1;
    27. vspeed = -16;}
    28. }
    29. }
    30. if (keyboard_check_released(vk_rcontrol)) {
    31. if vspeed < 0 {vspeed /= 6;}
    32. }
    33. //gravity
    34. if place_free(x,y + 1) {gravity = 1;}
    35. else {gravity = 0;}
    36. //speed limit
    37. if (vspeed > 18) {vspeed=18;}
    38. if (vspeed < -18) {vspeed=-18;}
    Alles anzeigen



    Momentan sieht das vorerst so aus:
    Spoiler anzeigen

    GML-Quellcode

    1. if (global.run=1) and (gamepad_button_check(0,gp_shoulderrb)) {myspeed=6} else {myspeed=4;}
    2. x += gamepad_axis_value(0,gp_axislh)*myspeed;
    3. //jump + doublejump
    4. if (global.jump=1) {
    5. if (gamepad_button_check(0,gp_face1)) {
    6. if !place_free(x,y + 1) {
    7. jumps+=1;
    8. vspeed = -18;}
    9. else if (gamepad_button_check_pressed(0,gp_face1)) and double_jump = 1
    10. and (global.Djump=1) {
    11. double_jump = 0;
    12. jumps+=1;
    13. vspeed = -16;}
    14. }
    15. }
    16. if (gamepad_button_check_released(0,gp_face1)) {
    17. if vspeed < 0 {vspeed /= 6;}
    18. }
    19. //gravity
    20. if place_free(x,y + 1) {gravity = 1;}
    21. else {gravity = 0;}
    22. //speed limit
    23. if (vspeed > 18) {vspeed=18;}
    24. if (vspeed < -18) {vspeed=-18;}
    Alles anzeigen



    Aber nun steckt die Spielfigur links oder rechts fest beim Versuch zu springen.

    Außerdem ist durch das fehlende hspeed die Gehbewegung nicht mehr flüssig.
    Wie kann ich beides unter einen Hut bringen?


    Ich danke vielmals im Voraus.

    EDIT: Hiermit kann der Spieler jetzt nach rechts laufen ohne stecken zu bleiben aber nicht nach links.

    GML-Quellcode

    1. if (place_free(x+myspeed,y)) {
    2. x += gamepad_axis_value(0,gp_axislh)*myspeed;
    3. }



    EDIT 2: Immer noch nichts, links will nicht.

    GML-Quellcode

    1. x += gamepad_axis_value(0,gp_axislh)*myspeed;
    2. if (place_meeting(x+hspd,y,obj_solids)) {
    3. move_outside_solid(180,10);
    4. gravity = 0;}
    5. if (place_meeting(x-hspd,y,obj_solids)) {
    6. move_outside_solid(0,10);
    7. gravity = 0;}


    EDIT 3: So! jetzt funktioniert es^^

    GML-Quellcode

    1. move_outside_solid(0,17);

    Aber warum muss ich den wert hier für links auf 17 setzen während es bei der rechten Seite mit "10" getan ist?? 8|

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Lunatic447 ()

  • Benutzer online 1

    1 Besucher