an schrägen/runden Plattformen bewegen

  • GM 8

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

  • an schrägen/runden Plattformen bewegen

    Hallo Leute.

    Hab mal wieder eine Frage zu einem Plattformer. Und zwar spielt man einen Player (einen Kreis) der sich recht schnell nach rechts bzw. nach links bewegen kann. Jetzt sollte man sich aber auch an schräge plattfomren bewegen können. Die Blöcke sehen ca. so aus: (siehe Anhang)

    Zurzeit habe ich das ca. so gelöst:

    GML-Quellcode

    1. if(place_free(x+move_speed,y)) {
    2. x += move_speed;
    3. } else if (place_free(x + move_speed, y - 1)){
    4. x += move_speed;
    5. y -= 1;
    6. } else if (place_free(x + move_speed, y - 2)){
    7. x += move_speed;
    8. y -= 2;
    9. } else if (place_free(x + move_speed, y - 3)){
    10. x += move_speed;
    11. y -= 3;
    12. } else if (place_free(x + move_speed, y - 4)){
    13. x += move_speed;
    14. y -= 4;
    15. } else if (place_free(x + move_speed, y - 5)){
    16. x += move_speed;
    17. y -= 5;
    18. } else if (place_free(x + move_speed, y - 6)){
    19. x += move_speed;
    20. y -= 6;
    21. } else if (place_free(x + move_speed, y - 7)){
    22. x += move_speed;
    23. y -= 7;
    24. } else if (place_free(x + move_speed, y - 8)){
    25. x += move_speed;
    26. y -= 8;
    27. } else if (place_free(x + move_speed, y - 9)){
    28. x += move_speed;
    29. y -= 9;
    30. } else if (place_free(x + move_speed, y - 10)){
    31. x += move_speed;
    32. y -= 10;
    33. } else if(place_free(x+1*sign(move_speed),y)) {
    34. x += 1*sign(move_speed);
    35. } else {
    36. move_speed = 0;
    37. }
    Alles anzeigen

    Aber das klappt leider auch nicht ganz. jemand eine Idee wie ich das anders lösen könnte?

    MfG Rodrog

    Edit: Gut hab es zurzeit so gelöst

    GML-Quellcode

    1. x += move_speed;
    2. if(move_direction == +1) {
    3. if(place_meeting(x,y,obj_block_solid_slope_right)) {
    4. move_outside_solid(090,move_speed);
    5. }
    6. if(place_meeting(x,y+8,obj_block_solid_slope_left)) {
    7. move_contact_solid(270,move_speed);
    8. move_outside_solid(090,move_speed);
    9. }
    10. if(place_meeting(x,y,obj_block_solid_normal)) {
    11. x = xprevious;
    12. }
    13. } else if(move_direction == -1) {
    14. if(place_meeting(x,y,obj_block_solid_slope_left)) {
    15. move_outside_solid(090,move_speed);
    16. }
    17. if(place_meeting(x,y+8,obj_block_solid_slope_right)) {
    18. move_contact_solid(270,move_speed);
    19. move_outside_solid(090,move_speed);
    20. }
    21. if(place_meeting(x,y,obj_block_solid_normal)) {
    22. x = xprevious;
    23. }
    24. }
    Alles anzeigen

    Sieht schon um einiges besser aus, jedoch denk ich mir gibt es noch bessere Möglichkeiten. Ich stelle diesen Thread trotz noch auf ungelöst.
    Bilder
    • spr_block02.png

      101 Byte, 16×16, 156 mal angesehen
    • spr_block05.png

      123 Byte, 16×16, 147 mal angesehen
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.

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

  • Ich habe mir jetzt ehrlich gesagt deinen Code nicht genau durchgelesen, aber eine Sache ist mir sofort in den Sinn gekommen: 2dcube, einer der bekanntesten Developer auf YoYoGames, hat mal ein Tutorial dort hochgeladen für 360° Gravitation. In seinem Spiel "They need to be fed" sah das sehr gut aus, finde ich.
    Hier der Link: sandbox.yoyogames.com/games/142398-360%C2%B0-gravity-engine

    Vielleicht hilft dir das ja etwas weiter.