Platformer Kisten verschieben

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

  • Guten Morgen,
    im Prinzip geht das so:

    GML-Quellcode

    1. /// @description Hier Beschreibung einfügen//
    2. Sie können Ihren Code in diesem Editor schreiben
    3. x = mouse_x
    4. y = mouse_y
    5. // Kollision mit player von links//
    6. if (place_meeting(x,y,object1)) and (x <= object1.x)
    7. { object1.x += 8 // Pixel }
    8. // Kollision mit player von rechts
    9. if (place_meeting(x,y,object1)) and (x >= object1.x)
    10. { object1.x -= 8 // Pixel }


    Video:


    Projekt Download:

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

  • Gut Danke Dir ...,

    Wenn ich den Code benutze, dann kann mein Player die Kisten hin und her verschieben.

    Es gibt aber noch ein paar Probleme:

    1. Der Player kann die Kisten in die Mauer reinschieben, selbst wenn ich im obj_kisten eine Kollisionsabfrage erstelle, welcher den hspeed auf 0 setzt ...,

    2. Wenn der Player auf die Kisten springt dann rutschen Sie zur Seite, ich habe schon damit probiert:

    if place_meeting(x,y+vspd,obj_kiste)
    {
    while(!place_meeting(x,y+sign(vspd),obj_kiste))
    {
    y+=sign(vspd)
    }
    vspd = 0
    }

    y += vspd

    Das funktioniert aber nicht.

    3. Am besten wäre es wenn sich die Kisten langsam verschieben, momentan geht es noch zu ruckartig, also es sollten schon die 8 Pixel bleiben aber halt langsam gleiten.
  • Hallo @Pupinoobie
    ich bin selber kein Profi in GML, aber mein Ansatz wäre das hier,
    musst es halt noch für Dich anpassen.
    Object2 ist eine Mauer die Links und Rechts eine Grenze bildet.

    GML-Quellcode

    1. /// 64 = Spritehöhe/breite
    2. x = mouse_x
    3. y = mouse_y
    4. // Kollision mit player von links
    5. //
    6. if (place_meeting(x,y,object1)) and (x <= object1.x) and (y > object1.y ) and (y < object1.y + 64 )
    7. {
    8. if place_empty(object1.x+8,object1.y,object2){ object1.x += 8 }// Pixel
    9. x = object1.x - 64
    10. }
    11. // Kollision mit player von rechts
    12. if (place_meeting(x,y,object1)) and (x >= object1.x) and (y > object1.y ) and (y < object1.y +64 )
    13. {
    14. if place_empty(object1.x-8,object1.y,object2){ object1.x -= 8 } // Pixel
    15. x = object1.x + 64
    16. }
    17. // Kollision mit player von oben
    18. if (place_meeting(x,y,object1)) and (y <= object1.y) and (x > object1.x ) and (x < object1.x + 64 )
    19. {
    20. y = object1.y - 64
    21. }
    Alles anzeigen
  • Benutzer online 1

    1 Besucher

  • Tags