Frage zum Origin und place_free(x,y)

  • GM 8

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

  • Frage zum Origin und place_free(x,y)

    Ich hab was seltsames bei meiner J'n'R-Engine beobachtet: ich benutze die abfrage mit place_free, um die Figur den Sprung abbrechen zu lassen, wenn sie von unten auf einen Gegenstand mit "solid" trifft. Der Origin des Sprites liegt bei (16/31), also auf dem "Boden" (der Sprite ist 32x32 groß). Komischerweise funktioniert alles wenn ich den Kram mit

    GML-Quellcode

    1. if !place_free(x,y-1) sprung = false

    abfrage und nicht wie ichs logisch gefunden hätte mit der höhe des nicht transparenten Sprites, also ca

    GML-Quellcode

    1. if !place_free(x,y-26) sprung = false

    da springt die Figur nur so hoch, als ob sie diese 26 Pixel größer wäre. Kann mir das jemand erklären?

    Im Anhang ein Beispiel, Pfeiltasten laufen und springen, "a" die Variable in place_free erhöhen, "s" erniedrigen, mit F12 neustarten

    PS: bitte die Player-Sprites nicht verwenden
    Dateien
    • morphy bsp.rar

      (12,31 kB, 202 mal heruntergeladen, zuletzt: )
  • so weit ich weiß, prüft er bei place_free(a,b), ob der Sprite mit irgenteinem (soliden) Objekt kollidieren würde, wenn er an der Position (a,b) wäre. Somit ist dann auch logisch, dass es nur y-1 sein muss.
  • es wird ja nur geprüft ob das sprite (oder die mask) deines objektes etwas berühren würde...
    mit if (place_free(x,y-1)) fragst du also nur ab ob ein Pixel über z.B. den kopf deines players der platz schon belegt ist (durch ein solides objekt)oder nicht.

    sagst du jetzt if (place_free(x,y-26)) kontrolliert das programm logischerweise, ob der platz 26pixel über den kopf deines players frei ist.

    lg gruen