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:
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:
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
- if movedir == 0 // 0 = Automatische bewegung nach oben-unten
- {
- //upsite
- if collision_rectangle(x+20, y, x+44, y+10, obj_redblock,false,true )
- {
- movespeedy = +8; // Autobewegung nach unten
- }
- //downsite
- if collision_rectangle( x+20, y+54, x+44,y + 64,obj_redblock,false,true )
- {
- movespeedy = -8; // Autobewegung nach oben
- }
- //leftsite
- if collision_rectangle(x, y+20, x+10, y+44, obj_redblock,false,true )
- {
- x = other.x + 64; // links vom Collisionsobject
- }
- //rightsite
- if collision_rectangle( x+54, y+20, x+64, y+44, obj_redblock,false,true )
- {
- x = other.x - 64;// rechts vom Collisionsobject
- }
- }
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
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fabbio ()