Verbuggte Kollision beim nach oben springen

  • Allgemein

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

  • Verbuggte Kollision beim nach oben springen

    Hallo liebe GM's,

    habe wieder mal Probleme mit den Kollisionen in meinem Spiel.
    Die Spielfigur (Block), gelangt beim springen nicht ganz an den oberen rand, als hätte sie eine größere Maske, als das Sprite an sich. (Was aber nicht der Fall ist)
    Es scheint mir als wäre der Fehler bei der direkten Kollisions-Abfrage. Sprich im "Collision" Event.
    Dort ist folgender Code enthalten:
    Spoiler anzeigen

    GML-Quellcode

    1. if vspeed > 0 and !place_free(x,y + vspeed)
    2. {
    3. gamepad_set_vibration(0,vib,vib)
    4. alarm[0] = 15;
    5. vib = 0;
    6. double_jump = 1
    7. move_contact_solid(direction,vspeed)
    8. }
    9. vspeed = 0
    Alles anzeigen



    Und im Step Event dieses hier:
    Spoiler anzeigen

    GML-Quellcode

    1. xspeed -= xspeed / 6;
    2. if (global.run=1) and (gamepad_button_check(gpid,gp_shoulderrb)) {myspeed=2} else {myspeed=1;}
    3. repeat (abs(xspeed))
    4. if place_free(x+sign(xspeed),y){
    5. x += sign(xspeed)
    6. }else{
    7. xspeed = 0
    8. }
    9. xspeed += gamepad_axis_value(gpid,gp_axislh)*myspeed;
    10. if (place_meeting(x+hspd,y,obj_solids)) {
    11. move_outside_solid(180,10);
    12. gravity = 0;}
    13. if (place_meeting(x-hspd,y,obj_solids)) {
    14. move_outside_solid(0,17);
    15. gravity = 0;}
    16. if (global.jump=1) {
    17. if (gamepad_button_check(gpid,gp_face1)) {
    18. if !place_free(x,y + 1) {
    19. jumps+=1;
    20. vspeed = -18;}
    21. else if (gamepad_button_check_pressed(gpid,gp_face1)) and double_jump = 1
    22. and (global.Djump=1) {
    23. double_jump = 0;
    24. jumps+=1;
    25. vspeed = -16;}
    26. }
    27. }
    28. if (gamepad_button_check_released(gpid,gp_face1)) {
    29. if vspeed < 0 {vspeed /= 6;}
    30. }
    31. if (place_free(x,y+1)) and vspeed > 0 {
    32. vib += 0.01;}
    33. if (vib > 100) {vib = 100;}
    34. if place_free(x,y + 1) {gravity = 1;}
    35. else {gravity = 0;}
    36. if (vspeed > 18) {vspeed=18;}
    37. if (vspeed < -18) {vspeed=-18;}
    38. if(jumps > 50) {jumps=0;}
    39. if(place_meeting(x,y+1,obj_solids)) and (place_free(x,y-4)) {lastposX=x; lastposY=y;}
    40. if(x > room_width-48) then x=room_width-48;
    41. if(x < 0) then x=0;
    Alles anzeigen


    Kann hier jemand direkt einen Fehler erkennen, dass das verursacht?

    EDIT: Kann nicht genau sagen was nicht korrekt war, aber am Code lag es nicht.
    Anscheinend habe ich ein Problem mit den Masken des Objektes.

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