Speed und Friction bestimmen

  • GM 8

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

  • Wenn die Entfernung zur Wand s beträgt, nimmst du als Speed einfach 2s+1 und als Friction s+1, dann springt die Box in einem Step vor die Wand und bleibt im nächsten stehen. Aber ich glaube, das wolltest du nicht wissen.

    Friction ist der Betrag, um den Speed in jedem Step gesenkt wird, bevor die Bewegung ausgeführt wird. Und wenn es genau vor der Wand zum Stehen kommen soll, muss Speed genau dort 0 werden. Nun kannst du rückwärts rechnen.
    Weil ich schreibfaul bin, kürze ich Friction, Speed und die Entfernung zur Wand mal f, v und s ab.
    Gehen wir mal davon aus, dass bei der Ankunft v = f war, und somit vor der Wand gerade so v = 0 geworden ist. Dann befand sich das Objekt im Step davor f Einheiten von der Wand entfernt, also s = f. Im Step davor war dann s = 2f + f, davor 3f + 2f + f.

    D.h., wenn du eine Friction gegeben hast, und weißt, wo es zum Stehen kommt, kannst du dir ausrechnen, wo es n Steps davor gewesen sein muss, nämlich f*n*(n+1)/2 Einheiten (Pixel) vom Ziel entfernt, und welche Geschwindigkeit es zu der Zeit gehabt haben muss, nämlich n*f.

    Wenn du nun also eine Entfernung gegeben hast, musst du dir nur noch vorgeben, wieviele Steps du brauchen willst, um das Ziel zu erreichen, und kannst dir dann mit f = 2s/(n*(n+1)) und v = n*f Speed und Friciton berechnen.
  • Hi

    Danke für die gute ausführliche Erklärung. :)
    Aber irgendwie stimmt was an der Formel nicht.
    Wahrscheinlich liegt es aber am GM und der Ungenauigkeit.
    Wenn ich mal 60 Steps annehme und die Strecke 800 ist, dann kommt als friction ja ungefähr 0,44 raus.
    Und 0.44 in die andere Formel eingesetzt bringen einen auf 792,5.

    Beim Game Maker beweget sich das Objekt sogar noch weniger ( nur bis 774 Pixel )

    Hier zu Demonstration:
    Download GM7 (Mac + Win)
    Download GM8

    Liegt das auch noch an der Speed Ungenauigkeit?

    MfG xxskxx
    -
  • Ja, das wird wohl an Rundungsfehlern liegen. Wenn ich dein Beispiel durchrechne, und auf 4 Nachkommastellen runde, erhalte ich eine Friction von 0,4372 womit dann eine Distanz von 800,076 (Pixeln) zurückgelegt wird. Was der GM mit seinen Fließkommazahlen dabei anstellt, will ich gar nicht wissen.

    Außerdem solltest du bedenken, dass es keine gebrochenen Pixel gibt, d.h. da wird vermutlich jeden Step gerundet. Die Formel oben geht von einer Welt mit beliebiger Genauigkeit aus; Computer können aber nur diskrete Werte speichern.