Jump'n'Run Schrägen / Slopes

  • GM 8

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

  • Jump'n'Run Schrägen / Slopes

    Hi

    Ich häng jetzt schon seit längerem daran Slopes anständig einzubauen. Vor Jahren hat es mal geklappt, aber nur mit sehr vielen sehr wirren D&D Funktionen.
    Ich benutze hspeed und vspeed, ich habs mir so halt angewöhnt anständige die Geschw sehen zu können.

    Das Hauptprogramm ist in etwa so aufgebaut

    GML-Quellcode

    1. script_execute(scr_states) // organizes states eg onGround / inAir; checks for Ground
    2. script_execute(scr_moving) // sets movings based on scr_states
    3. script_execute(scr_control) // controls left/right, jump and attack
    4. script_execute(scr_terrain) // checks terrain and stops if blocked
    5. script_execute(scr_spriteUpdate) // updates sprites


    so bei terrain steht in etwa folgendes:
    überprüft wird aber nur Slopes nach oben, nach unten steht schon bei scr_states und funktioniert

    GML-Quellcode

    1. if (hspeed > 0) // Bewegung nach rechts
    2. {
    3. if (script_execute(scr_colRectangle,obj_stair_R,2,hspeed)) // 1=oben, 2=rechts, 3=unten, 4=links ; Weite für die getestes wird
    4. or (script_execute(scr_colRectangle,obj_stair_R2,2,hspeed))
    5. or (script_execute(scr_colRectangle,obj_stair_L,2,hspeed))
    6. or (script_execute(scr_colRectangle,obj_block,2,hspeed))
    7. {
    8. script_execute(scr_terrainCheck)
    9. if (checkY = 999)
    10. {
    11. hspeed = 0
    12. }else{
    13. y = checkY
    14. }
    15. }
    16. }
    Alles anzeigen
    gleiches gibt es auch für links

    ich glaub das Problem liegt in der TerrainCheck, denn die gibt bei Slopes immer 999 -also Wand- aus

    GML-Quellcode

    1. maxHigh = 20
    2. i = 0
    3. breakLoop = 0
    4. do
    5. {
    6. if (place_free(x,bbox_bottom-i))
    7. {
    8. checkY = bbox_bottom - i +3
    9. breakLoop = 1
    10. }
    11. i += 1
    12. }
    13. until ((i = maxHigh) or (breakLoop = 1))
    14. if (breakLoop = 0)
    15. {
    16. checkY = 999
    17. }
    Alles anzeigen
  • Hey, ich habe Kollisionsprüfung für Slopes folgendes gemacht: (Ich gehe davon aus, dass du ein Slope-Objekt hast)

    GML-Quellcode

    1. //Im Step-event der Spielfigur
    2. if (place_meeting(x,y,obj_slope)
    3. {
    4. while (place_meeting(x,y,par_slope)
    5. {
    6. y-=1;
    7. }
    8. }

    gib all deinen stair-objekten das par_slope-objekt als Parent. Und achte darauf, dass bei den Sprites precise-collision-checking aktiviert ist

    "Make love, not Warcraft"