Collision: Der player soll seine x position behalten, nur wie?

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

  • Collision: Der player soll seine x position behalten, nur wie?

    So,
    im obj_player ist ein Collisionsevent mit obj_redblock.
    Soweit so gut.
    Der player bewegt sich automatisch nach oben/unten, bewegung wird nach einer Collision umgekehrt. Funktioniert.
    Die links/rechts bewegung wird über die Tastaur gemacht, Funktioniert ansich auch.

    Wenn nun der player sich links vom obj_redblock befindet und ich ihn so nahe heran bewege das eine Collision stattfindet, soll die x position vom player
    seine eigene Pixelgrösse, links oder rechts vom Collisionsobject behalten (Es slidet daran vorbei) Funktioniert auch.
    Aber, findet eine Collision rechts vom player statt und kurz darauf auch mit dem obj_redblock von unten, macht die player.x position einen doppelten satz nach links.

    Vieleicht bin ichnfach nur zu müde, aber ich erkenne den fehler nicht.

    Damit man mich etwas besser versteht, hier noch ein link zu ScreenVideo
    und hier der Collisionscode:

    GML-Quellcode

    1. if movedir == 0 // 0 = Automatische bewegung nach oben-unten
    2. {
    3. //upsite
    4. if collision_rectangle(x+20, y, x+44, y+10, obj_redblock,false,true )
    5. {
    6. movespeedy = +8; // Autobewegung nach unten
    7. }
    8. //downsite
    9. if collision_rectangle( x+20, y+54, x+44,y + 64,obj_redblock,false,true )
    10. {
    11. movespeedy = -8; // Autobewegung nach oben
    12. }
    13. //leftsite
    14. if collision_rectangle(x, y+20, x+10, y+44, obj_redblock,false,true )
    15. {
    16. x = other.x + 64; // links vom Collisionsobject
    17. }
    18. //rightsite
    19. if collision_rectangle( x+54, y+20, x+64, y+44, obj_redblock,false,true )
    20. {
    21. x = other.x - 64;// rechts vom Collisionsobject
    22. }
    23. }
    Alles anzeigen


    Edit://
    Habe den fehler gefunden,
    findet die kollision an der seite statt und auch eine unten, wird nicht die other.x position von dem roten block rechts vom player
    genommen, sonder die position von dem darunterliegenden.

    Ich habe hier einfach eine zusätzliche abfrage mit dazu genomen:
    and other.x > x

    GML-Quellcode

    1. //rightsite
    2. if collision_rectangle( x+54, y+20, x+64, y+44, obj_redblock,false,true )
    3. {
    4. x = other.x - 64;// rechts vom Collisionsobject and other.x > x
    5. }

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