gm physics - einem objekt einen impuls in eine bestimmte richtung geben

  • Allgemein

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

  • gm physics - einem objekt einen impuls in eine bestimmte richtung geben

    ich bin gerade etwas ratlos. ich versuche mich gerade mit gm physics.

    ich habe ein raumschiff, welches mit einem greifer felsbrocken packen kann. siehe bild.

    wenn man allerdings den fels loslässt, muss man vom felsen davon fliegen, damit man den felsen nicht direkt wieder greift. deswegen möchte ich, dass der fels mit kleiner geschwindigkeit vom raumschiff weg driftet wenn man ihn loslässt. mein problem liegt jetzt darin, wie ich dem felsen die korrekte richtung beibringe! denn wenn ich dem felsen mit physics_apply_local_impulse() einen impuls gebe, fliegt der natürlich in richtung seiner ausrichtung davon (richtung roter strich auf felsen); ich möchte aber, dass er in richtung roter strich des raumschiffs wegfliegt. kurz gesagt, wie krieg ich den vektor aus der rotation des raumschiffes heraus. oder muss ich das anders machen?
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Den Vektor von der Rotation des Schiffes kannst du mit sin(x) und cos(x) berechnen, ebenfalls mit lengthdir_x(len, dir) und lengthdir_y(len, dir) bei denen du statt radians, degrees angibts:

    GML-Quellcode

    1. var spdx = lengthdir_x(/*speed*/, obj_spaceship.rotation);
    2. var spdy = lengthdir_y(/*speed*/, obj_spaceship.rotation);
    3. physics_apply_force(0, 0, spdx, spdy); // wenn ich mich nicht irre funktioniert das so richtig, mit local wird die phy_rotation einbezogen
    :saint:
  • Ich kenn mich mit gm Physics nicht aus, aber hast du die möglichkeit wenn sich dein Fels normalerweise entlang seiner ausrichtung fortbewegt, die differenz zwischen Felswinkel und Raumschiffwinkel zu addieren?

    wenn sich der Asteroid so bewegt oder sich seine position so in etwa überprüfen lässt

    GML-Quellcode

    1. x += lengthdir_x(geschwindigkeit, winkel)
    2. y += lengthdir_y(geschwindigkeit, winkel)

    das du ganz simpel

    GML-Quellcode

    1. x += lengthdir_x(geschwindigkeit, winkel+winkeldifferenz)
    2. y += lengthdir_y(geschwindigkeit, winkel+winkeldifferenz)

    rechnest.

    bzw den Impuls in diese Richtung veränderst, dann bleibt die Ausrichtung des Asteroiden gleich, aber der Impuls kommt von einem anderen Winkel.

    Ich benutzte das um Seitschritte zu machen obwohl ich geradeaus schaue, damit sich die Kamera nicht dorthindreht wo ich hingehe. Das sollte also funktionieren.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • ha! habs raus!
    tice, wir hattens schon fast richtig. deine lösung stimmte fast. ergab jedoch, dass der stein sich drehte. der grund war, dass der impuls nicht im zentrum der masse des steins aktiviert wurde... also mit phy_com_x.

    so funktionierts:

    GML-Quellcode

    1. var xx = lengthdir_x(4, -obj_ship.phy_rotation);
    2. var yy = lengthdir_y(4, -obj_ship.phy_rotation);
    3. physics_apply_force(phy_com_x, phy_com_y, xx, yy);


    danke euch allen.
    gruss, belial
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇