ein Objekt / verschiedene Positionen

  • GM 8

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

  • ein Objekt / verschiedene Positionen

    Hi Leute.

    Ich bräuchte doch nochmal etwas Hilfe.
    Und zwar :
    Würde ich gerne EIN Objekt ,..mehrfach an verschiedenen Poistionen im Raum erscheinen lassen. Soweit kein Thema,..Doch...
    Mein Problem besteht darin das die Postion vorgeschrieben sein soll. Und das sich das Objekt selbstständig nach und nach alle vorgeschrieben Positionen von selber ausliest und bei behält.

    Zum bessseren verständnis :

    Bei meinem Projekt rotieren ( kreisen ) Objekte um ein Hauptobjekt herrum. Nun sollen von level zu level mehr Objekte des selben Types um das Hauptobjekt herrum kreisen.
    Denn Winkel zum Hauptobjekt lege ich im create Event fest.
    z.b.
    Für das kreisende Objekt

    GML-Quellcode

    1. direction=167

    direction ,..bestimmt den winkel
    dann im step event

    GML-Quellcode

    1. x=obj_gegner.x-200*sin(degtorad(direction))
    2. y=obj_gegner.y-200*cos(degtorad(direction))

    dieser code ist denn für den Abstand zwischen Hauptobjekt zum kreisenden Objekt zuständig.

    Tja,..wie gefragt . Wie bekomme ich es hin das sich das Objekt selbstständig Winkel ( direction ) und den wert für den Abstand holt. Und hlat auch bei meheren Objekten des selben Types. Sollte Objekt A z.b. Winkel 167 haben und Objekt A ( 2 ) Winkel 195 . Die Werte für die Winkel sollten wie gesagt vorgegeben sein.
    Momentan bin ich echt bei 1000 verschiedene Objekte des selben Types zuerstellen , wo sich halt " nur " der Wert für Winkel und Abstand ändert. Bestimmt viel zu umständlich,....
    Ich hoffe ich hab einigermaßen verständlich erklärt.

    Gruß, neogeo.
  • Also, ich denke es gibt mehrere Möglichkeiten. Du könntest die Winkel auf einem Stack ablegen und dann in den Objekten auslesen.

    Stack erstellen und befüllen (in einem Controller oder irgendwo anders eben):

    GML-Quellcode

    1. global.winkel = ds_stack_create();
    2. ds_stack_push(global.winkel, 167);
    3. ds_stack_push(global.winkel, 195);


    Und im kreisenden Objekt dann auslesen:
    :event_create: Create

    GML-Quellcode

    1. direction = ds_stack_pop(global.winkel);


    Wichtig ist dann noch das du den Stack irgendwo löschst:

    GML-Quellcode

    1. ds_stack_destroy(global.winkel);


    Für die Abstände könntest du dann noch einen weiteren Stack hinzufügen.

    Wenn es nur um das rein optische geht könntest du natürlich einfach mehrere Sprites malen (unter der Annahme das die Objekte gleichmäßig um das Objekt kreisen sollen und count für die Anzahl der Objekte steht). Falls es nicht gleichmäßig sein soll kannst du auch hier eine Liste oder ein Array einführen und in der Schleife die jeweiligen Werte auslesen.

    :event_draw: Draw

    GML-Quellcode

    1. for(i = 0; i < count; i += 1) {
    2. draw_sprite(sprKreis, 0, x + lengthdir_x(abstand, (360 / max(1, count)) * i), y + lengthdir_y(abstand, (360 / max(1, count)) * i));
    3. }