Objekt rutscht bei Fall in den Boden

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

  • Du musst jeden Pixel für eine Kollision abfragen, nicht nur y + speed.
    Den Code solltest du im Step event einfügen können um das Problem zu beheben

    GML-Quellcode

    1. var amount = y-yprevious;
    2. y = yprevious;
    3. repeat(abs(amount)) {
    4. if(!place_meeting(x,y+sign(amount),obj_wall)) {
    5. y += sign(amount);
    6. }else{
    7. break;
    8. }
    9. }
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Am besten wäre es zuerst "y+vspeed" anzufragen und anschließend erst die pixelgenaue Verschiebung bis zur Kollision vorzunehmen. Spart eine Hand voll nicht nötiger Kollisionsabfragen, gerade wenn viele verschiedene Objekte die Kollision mit vielen anderen Objekten prüfen, kommt da schnell einiges zusammen.

    move_contact_solid() sollte übrigens das selbe machen, aber ich persönlich wurde nie warm mit GameMakers internem Bewegungs und Solidsystem. Trotz soliden Wandobjekten und move_contact_solid() funktion, blieben bei mir Objekte in Wänden hängen, also bin ich auf eigene Movement Variablen und eigene move_contact() Funktion umgestiegen, bei der ich volle Kontrolle habe und mögliches Fehlverhalten korrigieren kann.