Player bleibt an der Wand hängen

  • GM 8

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

  • Player bleibt an der Wand hängen

    Ich hab ein Problem mit ghost fighter. Mein Player bleibt während man läuft an einer Wand hängen. Hier die Step-Event codes:

    GML-Quellcode

    1. //Anziehungskraft
    2. if place_free(x,y+1)
    3. {
    4. gravity_direction=270
    5. gravity=0.7
    6. }
    7. else
    8. {
    9. gravity_direction=270
    10. gravity=0
    11. }
    12. //Springen
    13. if keyboard_check_pressed(vk_up) && not place_free(x,y+1)
    14. {
    15. vspeed=-10
    16. }
    17. //Spritewechsel bei Pfeiltasten
    18. if keyboard_check(vk_right)
    19. {
    20. image_index=2
    21. hspeed=4
    22. }
    23. if keyboard_check(vk_left)
    24. {
    25. image_index=3
    26. hspeed=-4
    27. }
    28. if keyboard_check_released(vk_left)
    29. {
    30. hspeed=0
    31. image_index=1
    32. }
    33. if keyboard_check_released(vk_right)
    34. {
    35. hspeed=0
    36. image_index=0
    37. }
    38. //Objectwechsel Boxen
    39. if keyboard_check_pressed(vk_space)
    40. {
    41. instance_change(obj_playerstay_box_right,true)
    42. }
    Alles anzeigen


    und hier collision with wall:

    GML-Quellcode

    1. //collision mit obj_block
    2. move_contact_solid(direction,12)
    3. vspeed=0
  • Du musst deine keyboard_check Evenst umändern.

    GML-Quellcode

    1. if (keyboard_check(vk_right) and place_free(x+1,y))
    2. {
    3. image_index=2
    4. hspeed=4
    5. }
    6. if (keyboard_check(vk_left) and place_free(x-1,y)){
    7. image_index=3
    8. hspeed=-4
    9. }
    Alles anzeigen


    Das wird trotzdem noch ein wenig verbuggt sein, da du im Collision-Event mit wall, den vspeed einfach auf 0 setzt, d.h. egal aus welcher Richtung man kommt, wird der vspeed auf 0 gesetzt. Bau da eine Abfrage ein.

    Ach ja, solche Fragen wurden hier im Forum schon sehr, sehr oft gestellt, deswegen: Durchforste erst das Forum hier, bevor du eine Frage stellst.

    MfG Trixt0r

    Albert Einstein schrieb:

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
  • Bei Objekten die animierte Sprites haben und mit Kollisionsprüfungen arbeiten sollte man eine Mask benutzen.

    Wenn sich bei einer Animation Pixel verschieben passiert es schnell, dass diese neuen Pixel inmitten eines soliden Objekts stecken. Daher sollte man ein Rechteck oder ein Kreis als Mask benutzen, damit sowas nicht passieren kann. Wenn eine Mask bestimmt wird, wird diese nämlich für die Kollisionsprüfungen herangezogen und nicht der gerade zugewiesene Sprite bzw. dessen subimage.