ein für sich kreisendes Objekt / folgt einem anderen Objekt

  • GM 8

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

  • ein für sich kreisendes Objekt / folgt einem anderen Objekt

    Hallo Leute.
    Ich bräuchte da mal etwas Hilfe. Ich komm nicht drauf....

    Wie bekomme ich es hin das ein für sich kreisendes Objekt. einen anderen Objekt folgt und weiter dabei seine kreisende Bahn beibehält.
    Also es kreist Obj_a in einem radius von 10 um seinen eignen x,y, Mittelpunkt.

    nun soll es permanent in seinem kreisenden zustand ,..Obj_b folgen.
    Wie mache ich sowas???
  • Im Step Event von Obj_a:

    GML-Quellcode

    1. var rad, rotspeed;
    2. rad = 10; // Radius
    3. rotspeed = 2; // Geschwindigkeit mit der Obj_a um Obj_b kreist
    4. x = Obj_b.x + lengthdir_x(rad, direction);
    5. y = Obj_b.y + lengthdir_y(rad, direction);
    6. direction += rotspeed;



    lengthdir_x(len,dir)
    Gibt die horizontale x-Komponente von dem Vektor bestimmt durch die
    gegebene Länge und Richtung wieder.

    lengthdir_y(len,dir)
    Gibt die vertikale y-Komponente von dem Vektor bestimmt durch die
    gegebene Länge und Richtung wieder.


    Für die Rotation hab ich jetzt einfach die direction Variable verwendet. Falls du direction anderweitig verwendest, musst es noch mit einer eigenen Variable austauschen.
  • Ok, dann probier mal folgendes:
    Ins Create Event von Obj_a:

    GML-Quellcode

    1. rotdir = 0;


    Dann lösch mal den Code von vorhin aus dem Step Event und schreib das ins Draw Event:

    GML-Quellcode

    1. move_towards_point(Obj_b.x, Obj_b.y, 3) // oder wie auch immer du das Objekt bewegen lassen willst
    2. var rad;
    3. rad = 50; // Radius
    4. draw_sprite(sprite_index, image_index, x + lengthdir_x(rad, rotdir), y + lengthdir_y(rad, rotdir))
    5. rotdir += 10; // Ersetzte 10 mit der Rotationsgeschwindigkeit die du brauchst


    Das sorgt dafür, dass sich Obj_a in richtung Obj_b bewegt und der Sprite nicht an die eigentliche Position des Objekts, sondern eben darum kreisend gedrawt wird.
    Wichtig ist hierbei, wenn du Kollisionen mit Obj_a brauchst, dass die Kollision nicht da auftritt, wo der Sprite ist, sondern da, wo das Objekt wirklich ist, nämlich in der Mitte.