problem mit schrägen ebenen

  • GM 8

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

  • problem mit schrägen ebenen

    Nabend liebe community
    ich arbeite zur zeit an nem jump n run.die "normale" bewegung steht schon,aber ich habe noch probleme mit den schrägen platformen.diese haben einen 45° winkel.die auf und ab bewegung funktioniert bereits,jedoch sehen die übergänge von schräger platform auf gerade platform und anderherum nicht besonders schön aus,oder hauen gar nicht hin.der player geht nicht so sauber um die ecke oder bleibt hängen und fängt an zu ruckel.die datei mit dem problem ist im anhang.
    schaut es euch einfach an,probiert es aus,erkennt die fehler und bessert sie aus :thumbsup:
    danke, stevey
    Dateien
  • Servus,

    ich bessere ja eher ungern die Fehler von anderen aus, aber ich gebe dir mal den einen oder anderen Denkanstoß. Erstens: Die Art wie zu die Schrägen ebenen löst ist viel zu kompliziert. Du machst Kollisionsabfragen für sämtliche Objekte. Das geht auch wesentlich einfacher. In dem Fall sind "parents" deine Freunde. In deinem Beispiel hast du insgesammt 3 mal ein Kollisions Event, in dem ein und der selbe Code ausgeführt wird (da kannst dann übrigens gleich ein Script daraus machen). Probier mal folgenes: Erstelle ein Objekt namens obj_parent_kollision oder so ähnlich. Stell das bei den Objekten obj_block, obj_schraege_links und obj_schraege_rechts als parent ein. Dann lösche die Kollsions events aus dem obj_player und ersetzte sie durch ein kollisions event mit dem Objekt obj_parent_kollision. Wenn du jetzt im Spiel mit einem schrägen oder geraden Block eine Kollision hast (sprich, du fällst nach unten), werden all diese gleich behandelt, da sie Kind Objekte vom Parent Objekt sind.

    Zu deiner ursprünglichen Fragen, warum das Player Objekt fröhlich vor sich hin zuckt... Das liegt daran, das dein Code einfach nicht ganz richtig ist. Auch hier wieder das Problem, das du jedes Kollisionsobjekt einzeln überprüfst, auch wenn das An sich nötig ist. Probiere, wenn du das mit den Parents verstanden hast mal folgendes aus:

    Gib folgenden Code ins "Press Left" Event:

    GML-Quellcode

    1. if(!place_meeting(x-4,y+4,obj_kollision)) //unten links
    2. {
    3. x-=4;
    4. y+=4;
    5. }
    6. else
    7. if(!place_meeting(x-4,y,obj_kollision)) //links
    8. {
    9. x-=4;
    10. }
    11. else
    12. if(!place_meeting(x-4,y-4,obj_kollision)) //oben links
    13. {
    14. x-=4;
    15. y-=4;
    16. }
    Alles anzeigen


    Die Logik dahinter ist ganz einfach: Wenn die Position x-4,y+4 frei ist geht es links neben dir runter. Das Leben ist schön. Ist dem nicht so (else) schaust du ob links neben dir (x-4,y) was frei ist. Ist das der Fall, stehst du auf einer Gerade. Auch gut. Wenn dem nicht so ist überprüfst du (else) ob links über dir der Weg frei ist (x-4,y-4). Ist das der Fall, geht es bergauf. Ist dem auch nicht so, bist gerade gegen eine Mauer gelaufen. Das Selbe natürlich auf für rechts, mit ausgedrehten x werten.
    ...
  • ok,danke.soweit hab ich alles hinbekommen.nur leider gibt es noch 1 problem.und zwar bewegt er sich jetzt,wenn er in der luft ist auch nur diagonal nach links und rechts unten.er soll aber durch die gravitation wieder runterkommen und sich in der luft nur horizontal bewegen.
    hab die deite nochmal angehängt und hoffe du/ihr könnt mir nocheinmal helfen
    Dateien
  • ohhh das stimmt.tut mir leid.hier ist die neue datei,in der ich den code von dir verwende.
    wenn ihr das problem nicht gleich erkennt,erklähre ich es euch hier:
    springt einmal einfach mit "pfeiltaste oben" hoch.da hat der player die richtige höhe.wenn ihr jedoch mit "pfeiltaste links" oder "pfeiltaste rechts" in eine seitliche richtung bewegt,diese taste haltet und nun nach oben springt,werdet ihr sehen,dass die höhe um sehr viel kleiner ist.
    ODER
    wenn ihr einfach hochspringt und,wenn der player wieder runterkommt, euch zur seite bewegt,dann geht der player viel zu schnell wieder runter.

    danke, stevey
    Dateien

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

  • Benutzer online 2

    2 Besucher