Objekte an der sich immer ändernden Raumkontur entlang laufen lassen

  • Ich habe den Code jetzt mal nach interceptors Hinweis verändert und in das Spiel eingefügt.

    Allerdings klappt es immernoch nicht optimal.
    (Die Datei befindet sich als ZIP im Anhang)

    Hier mal der "neue" Code

    GML-Quellcode

    1. if hspeed = -4 && !place_free(x-4,y) && place_free(x,y+4)
    2. { hspeed = 0; vspeed = 4
    3. exit
    4. }
    5. else if hspeed=-4 && !place_free(x-4,y) && place_free(x,y-4)
    6. { hspeed = 0; vspeed = -4
    7. exit
    8. }
    9. if vspeed=-4 && !place_free(x,y-4) && place_free(x-4,y)
    10. { hspeed = -4; vspeed = 0
    11. exit
    12. }
    13. else if vspeed=-4 && !place_free(x,y-4) && place_free(x+4,y)
    14. { hspeed = 4; vspeed = 0
    15. exit
    16. }
    17. if hspeed=4 && !place_free(x+4,y) && place_free(x,y-4)
    18. { hspeed = 0; vspeed = -4
    19. exit
    20. }
    21. else if hspeed=4 && !place_free(x+4,y) && place_free(x,y+4)
    22. { hspeed = 0; vspeed = 4
    23. exit
    24. }
    25. if vspeed=4 && !place_free(x,y+4) && place_free(x+4,y)
    26. { hspeed = 4; vspeed = 0
    27. exit
    28. }
    29. else if vspeed=4 && !place_free(x,y+4) && place_free(x-4,y)
    30. { hspeed = -4; vspeed = 0
    31. exit
    32. }
    Alles anzeigen
    Dateien
    [SIZE="25"][COLOR="Red"]XP Hilfe - Schluss mit PC-Problemen[/COLOR][/SIZE]
    [SIZE="20"]http://xphilfe.de.tt[/SIZE]
  • Hi gm-freak

    Ich habe mir mal deine Datei runtergeladen.
    Habe selbermal mich selber mal mit GML beschäfftigt
    Da ich ja einige vorgaben von euch habe konnte ich mich reinversetzen.
    Ich habe mal deinen Code etwas verändert .
    z.B. habe ich wie du auch das "exit" eingefügt,dann habe ich statt "place_free" "place_empty" verwendet, damit werden auch ° non solide Instanzen° wie bsw.der Sand
    beachtet.
    Des weiteren habe ich eine Abfrage mehr eingefügt ,die das Obj. wieder aus einer Sackgasse herauß laufen lässt (ist sonst immer weiter gelaufen und dann den Raum außen entlang).

    So funktioniert das auch alles ganz gut.Genau so wie es sein muss.
    Jetzt ist das Problem das die anderen acht Wachen im gänsemarsch wie bei dir hinterher laufen sollen, aber voreinander ausreisen

    Ich stelle hier mal ne Datei von dem Level(Raum ist zu Testzwecken stark verändert)rein und den GML-Code

    GML-Quellcode

    1. if hspeed=-4 && !place_empty(x,y+4) && !place_empty(x-4,y) && !place_empty(x,y-4)
    2. {hspeed=+4;exit}
    3. if hspeed=-4 && place_empty(x,y+4)
    4. { hspeed = 0; vspeed=4;exit}
    5. else if hspeed=-4 && !place_empty(x-4,y) && place_empty(x,y-4)
    6. { hspeed = 0; vspeed=-4;exit}
    7. if vspeed=-4 && !place_empty(x-4,y) && !place_empty(x,y-4) && !place_empty(x+4,y)
    8. {vspeed=+4;exit}
    9. if vspeed=-4 && place_empty(x-4,y)
    10. { hspeed=-4; vspeed = 0;exit}
    11. else if vspeed=-4 && !place_empty(x,y-4) && place_empty(x+4,y)
    12. { hspeed=4; vspeed = 0;exit}
    13. if hspeed=+4 && !place_empty(x,y-4) && !place_empty(x+4,y) && !place_empty(x,y+4)
    14. {hspeed=-4;exit}
    15. if hspeed=4 && place_empty(x,y-4)
    16. { hspeed = 0; vspeed=-4;exit}
    17. else if hspeed=4 && !place_empty(x+4,y) && place_empty(x,y+4)
    18. { hspeed = 0; vspeed=4;exit}
    19. if vspeed=4 && !place_empty(x+4,y) && !place_empty(x,y+4) && !place_empty(x-4,y)
    20. {vspeed=-4;exit}
    21. if vspeed=4 && place_empty(x+4,y)
    22. { hspeed=+4; vspeed = 0;exit}
    23. else if vspeed=4 && !place_empty(x,y+4) && place_empty(x-4,y)
    24. { hspeed=-4; vspeed = 0;exit}
    Alles anzeigen
    Dateien
    • We_Fl_Bi.4.zip

      (18,28 kB, 105 mal heruntergeladen, zuletzt: )

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

  • Hi
    Nun nach wochenlangem "rumpasteln" habe ich es nun so hingebracht daß es so klappt wie ich es haben wollte.
    Dabei habe ich mich mit dem GML etwas näher beschäfftigen müssen.
    Dank einiger Vorlagen von GML-Codes konnte ich mich erst mal in diese Praktik reinversetzen.

    Vielen Dank an alle die mir dabei geholfen haben.
    Ich stelle hier nochmal ne GML und ne Datei von dem Spiel rein.Der Raum ist zu Testzwecken sehr verändert worden.

    für Kritiken und Anregungen bin ich sehr offen.

    GML-Quellcode

    1. if vspeed=-4 && (!place_meeting(x-4,y,obj_sand) &&(place_free(x-4,y) || position_meeting(x-4,y,obj_polizist_basis))) && ((position_meeting(x-32,y+32,obj_sand)^^position_meeting(x-32,y+32,obj_mauer))^^position_meeting(x-32,y+32,obj_stein1))
    2. { hspeed=-4;vspeed=0;exit;}
    3. if hspeed=+4 && (!place_meeting(x,y-4,obj_sand) &&(place_free(x,y-4) || position_meeting(x,y-4,obj_polizist_basis))) && ((position_meeting(x-32,y-32,obj_sand)^^position_meeting(x-32,y-32,obj_mauer))^^position_meeting(x-32,y-32,obj_stein1))
    4. {hspeed=0;vspeed=-4;exit;}
    5. if vspeed=+4 && (!place_meeting(x+4,y,obj_sand) &&(place_free(x+4,y) || position_meeting(x+4,y,obj_polizist_basis))) && ((position_meeting(x+32,y-32,obj_sand)^^position_meeting(x+32,y-32,obj_mauer))^^position_meeting(x+32,y-32,obj_stein1))
    6. { hspeed=+4;vspeed=0;exit;}
    7. if hspeed=-4 && (!place_meeting(x,y+4,obj_sand) &&(place_free(x,y+4) || position_meeting(x,y+4,obj_polizist_basis))) && ((position_meeting(x+32,y+32,obj_sand)^^position_meeting(x+32,y+32,obj_mauer))^^position_meeting(x+32,y+32,obj_stein1))
    8. { hspeed=0;vspeed=+4;exit;}
    9. if vspeed=-4 && !position_meeting(x-32,y,obj_polizist_basis)&&((position_meeting(x-32,y,obj_sand)^^position_meeting(x-32,y,obj_mauer))^^position_meeting(x-32,y,obj_stein1))&& !position_meeting(x,y-32,obj_polizist_basis) && ((position_meeting(x,y-32,obj_sand)^^position_meeting(x,y-32,obj_mauer))^^position_meeting(x,y-32,obj_stein1))&& !position_meeting(x+32,y,obj_polizist_basis)&&((position_meeting(x+32,y,obj_sand)^^position_meeting(x+32,y,obj_mauer))^^position_meeting(x+32,y,obj_stein1))
    10. {hspeed=0;vspeed=+4;exit;}
    11. if hspeed=+4 && !position_meeting(x,y-32,obj_polizist_basis)&&((position_meeting(x,y-32,obj_sand)^^position_meeting(x,y-32,obj_mauer))^^position_meeting(x,y-32,obj_stein1))&& !position_meeting(x+32,y,obj_polizist_basis)&& ((position_meeting(x+32,y,obj_sand)^^position_meeting(x+32,y,obj_mauer))^^position_meeting(x+32,y,obj_stein1))&& !position_meeting(x,y+32,obj_polizist_basis)&&((position_meeting(x,y+32,obj_sand)^^position_meeting(x,y+32,obj_mauer))^^position_meeting(x,y+32,obj_stein1))
    12. {hspeed=-4;vspeed=0;exit;}
    13. if vspeed=+4 && !position_meeting(x+32,y,obj_polizist_basis)&&((position_meeting(x+32,y,obj_sand)^^position_meeting(x+32,y,obj_mauer))^^position_meeting(x+32,y,obj_stein1))&& !position_meeting(x,y+32,obj_polizist_basis)&&((position_meeting(x,y+32,obj_sand)^^position_meeting(x,y+32,obj_mauer))^^position_meeting(x,y+32,obj_stein1))&& !position_meeting(x-32,y,obj_polizist_basis)&&((position_meeting(x-32,y,obj_sand)^^position_meeting(x-32,y,obj_mauer))^^position_meeting(x-32,y,obj_stein1))
    14. {hspeed=0;vspeed=-4;exit;}
    15. if hspeed=-4 && !position_meeting(x,y+32,obj_polizist_basis)&&((position_meeting(x,y+32,obj_sand)^^position_meeting(x,y+32,obj_mauer))^^position_meeting(x,y+32,obj_stein1))&& !position_meeting(x-32,y,obj_polizist_basis)&&((position_meeting(x-32,y,obj_sand)^^position_meeting(x-32,y,obj_mauer))^^position_meeting(x-32,y,obj_stein1))&& !position_meeting(x,y-32,obj_polizist_basis)&&((position_meeting(x,y-32,obj_sand)^^position_meeting(x,y-32,obj_mauer))^^position_meeting(x,y-32,obj_stein1))
    16. {hspeed=+4;vspeed=0;exit;}
    17. if vspeed=-4 && !position_meeting(x+4,y,obj_sand) && (place_free(x+4,y) || position_meeting(x+4,y,obj_polizist_basis))&& ((position_meeting(x-32,y,obj_sand)^^position_meeting(x-32,y,obj_mauer))^^position_meeting(x-32,y,obj_stein1))&& ((position_meeting(x,y-32,obj_sand)^^position_meeting(x,y-32,obj_mauer))^^position_meeting(x,y-32,obj_stein1))
    18. {hspeed=+4;vspeed=0;exit;}
    19. if hspeed=+4 && !position_meeting(x,y+4,obj_sand) && (place_free(x,y+4) || position_meeting(x,y+4,obj_polizist_basis))&& ((position_meeting(x,y-32,obj_sand)^^position_meeting(x,y-32,obj_mauer))^^position_meeting(x,y-32,obj_stein1))&& ((position_meeting(x+32,y,obj_sand)^^position_meeting(x+32,y,obj_mauer))^^position_meeting(x+32,y,obj_stein1))
    20. {hspeed=0;vspeed=+4;exit;}
    21. if vspeed=+4 && !position_meeting(x-4,y,obj_sand) && (place_free(x-4,y) || position_meeting(x-4,y,obj_polizist_basis))&& ((position_meeting(x+32,y,obj_sand)^^position_meeting(x+32,y,obj_mauer))^^position_meeting(x+32,y,obj_stein1))&& ((position_meeting(x,y+32,obj_sand)^^position_meeting(x,y+32,obj_mauer))^^position_meeting(x,y+32,obj_stein1))
    22. {hspeed=-4;vspeed=0;exit;}
    23. if hspeed=-4 && !position_meeting(x,y-4,obj_sand) && (place_free(x,y-4) || position_meeting(x,y-4,obj_polizist_basis))&& ((position_meeting(x,y+32,obj_sand)^^position_meeting(x,y+32,obj_mauer))^^position_meeting(x,y+32,obj_stein1))&& ((position_meeting(x-32,y,obj_sand)^^position_meeting(x-32,y,obj_mauer))^^position_meeting(x-32,y,obj_stein1))
    24. {hspeed=0;vspeed=-4;exit;}
    Alles anzeigen
    Dateien
    • We_Fl_Bi.neu.rar

      (17,79 kB, 103 mal heruntergeladen, zuletzt: )

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

  • Benutzer online 1

    1 Besucher