Abstand zwischen zusammengehörigen Sprites...

  • Abstand zwischen zusammengehörigen Sprites...

    Uff...

    Ist wieder so eine Sache, bei der ich mir nicht sicher bin, wie ich's erklären soll.

    Also ich probier's am besten mit einem bescheidenen Screenshot.



    Hier seht Ihr Plattformen mit Stacheln an der Unterseite.
    Die grünen Pfeile stellen die Paths der jeweiligen Plattformen dar.

    Eine Plattform besteht in meinem Fall aus zwei Sprites.
    Sprite oben (roter Kreis) ist eine neutrale Fläche, auf der das Maxerl auf und ab springen kann. Bei Berührung mit Sprite zwei (blauer Kreis) macht's Paff und das Maxerl ist gewesen.

    Allerdings tritt hierbei folgendes Problem auf:

    Die zusammenhängenden Sprites (also roter & grüner Kreis) verschieben sich mit der Zeit, wenn sich das Maxerl darauf befindet. Das äussert sich im Fall der vertikal verlaufenden Plattformen dadurch, dass der Abstand zwischen oberem und unterem Sprite grösser bzw. kleiner wird. Bei den horizontal Verlaufenden verschieben sich die zwei Sprites innerhalb der Breitenachse (dh. Stacheln sind plötzlich weiter rechts als die Oberseite der Plattform).

    Zwar geht es hierbei um minimale Abstände (ein, zwei Pixel) - aber ich versteh's dennoch nicht. Habe doch jeder der einzelnen Plattformen (beide Sprites) denselben Path zugewiesen.

    Wisst Ihr, was ich meine?

    Was mache ich falsch?
    Von mir aus haut Euch auf's Hirn - bin und bleibe ein GM-Noob - aber bitte helft mir ;)

    DANKE VIELMALS & schöne Grüsse.
  • Man könnte dem als kleinen Workaround vielleicht damit entgegenwirken, das jeden Step die jeweiligen Positionen auf den Bewegungsachsen immer wieder gleichgesetzt werden.
    Aber ich kann leider nicht sagen woran das liegen könnte.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • als erstest musst du den blauen teil ganz wegfallen lassen und im create event vom roten teil

    GML-Quellcode

    1. zusammenhang=instance_create(x,y+16,blauer teil)


    und dann in jedem step event vom roten teil

    GML-Quellcode

    1. zusammenhang.y=y+16


    also sollte der rote teil ein object sein und der blaue teil auch ein eigenes object
    ich hoffe das es so klappt

    und bei dem oberen musst du statt y einfach x und die passenden werte einsetzen ;)
    Die Schönheit liegt im Auge des Betrachters :D
  • Original von Andyworld
    und dann in jedem step event vom roten teil

    GML-Quellcode

    1. zusammenhang.y=y+16

    VORSICHT!
    Das hab ich früher auch immer gemacht, und mich dann gewundert warum die 2. Instanz der ersten immer so'n Bischen hinterher hinkt.

    Ich würde den Code

    GML-Quellcode

    1. zusammenhang.y=y+16
    Auf jeden Fall ins END-STEP Event packen.
    So hat man die Sicherheit, dass es auf jeden Fall NACH dem Step-Event der ersten Instanz, und VOR dem Draw-Event stattfindet.

    Nur um sicherzugehen.
    (Und wozu hat man sonst das End-Step Event? ;))
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Original von Andyworld
    wenn ich sowas mache mit hinterhergehen dann mach ich es immer in alle step events^^
    also

    begin step
    step
    und end step
    und vllt auch noch ins draw event
    dann ist man 100% abgesichert :D xD

    Naja, ok, so übertrieben muss es denke ich nicht sein. u.u
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Das hängt mit dem Order of events zusammen. Zwischen dem Step und dem End Step Event werden alle Bewegungen durch speed, gravity und paths (Auch Kollisionen) durchgeführt. Solche Positionsverschiebungen sollten also im End Step Event gemacht werden, damit die Verschiebung nicht einen Frame hinterherhinkt.

    Und da reicht auch wirklich nur das End Step Event. Zwischen End Step Event und Draw Event passiert nichts mehr.

    und btw: Begin Step Events finden vor Tasten-Events statt.

    In der Help nach Order of events oder so suchen.