Mehrere Instancen (Position)

  • GM 8

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

  • Mehrere Instancen (Position)

    Hallo

    Mein Problem ist das ich in einem Raum 3 Instanzen eines Objektes erstellt habe. Beim Ersten werden die Partikel richtig angezeigt und beim 2 und 3 nicht angezeigt, wenn ich nun die erste Instanz zerstöre werden die Partikel beim zweiten angezeigt aber beim dritten nicht und immer so weiter.

    Diesen Code verwende ich:

    GML-Quellcode

    1. part_emitter_region(auspuff,qualm_emitter,object_index.x+lengthdir_x(-62,object_index.direction+10),object_index.x+lengthdir_x(-62,object_index.direction+10),object_index.y+lengthdir_y(-62,object_index.direction+10),object_index.y+lengthdir_y(-62,object_index.direction+10),ps_shape_ellipse,ps_distr_linear);
    2. part_emitter_burst(auspuff,qualm_emitter,pt_shape_pixel,2);
    Meine Webseite: jesoftmedia.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Max77771 ()

  • Create Event

    GML-Quellcode

    1. sprite_index = spr_fahrzeug;
    2. image_blend = c_white;
    3. image_alpha = 0.75;
    4. image_xscale=1;
    5. image_yscale=0.75;


    Step End Event

    GML-Quellcode

    1. x=obj_auto.x+lengthdir_x(62.5,obj_auto.direction+15);
    2. y=obj_auto.y+lengthdir_y(62.5,obj_auto.direction+15);
    3. image_angle=obj_auto.direction;


    Dasselbe Problem nur das ich obj_auto nicht durch x oder y ersetzen kann. Die Position des Objektes muss durch das Objekt Auto und deren Instancen bestimmt werden. Nur wie soll ich das Machen da wen ich obj_auto. nutze wähle ich nur eine Instance aus und nicht alle.
    Meine Webseite: jesoftmedia.de
  • obj_auto.x liefert dir die x-Koordinaten des ältesten Objektes zurück (Also in deinem Fall das erste).

    Falls du deine Autos in einer seperaten Instanz bewegen lassen willst, würd ich das so lösen:

    GML-Quellcode

    1. with(obj_auto) {
    2. //Das ist im prinzip eine Schleife, die alle deine Instanzen liefert. Also wenn du da ein show_message("test"); haben würdest, würde auch dies x-Mal ausgegeben werden.
    3. //Du bist jetzt in den seperaten Instanzen und somit kannst du mit x/y die Koordinaten setzen:
    4. x += lengthdir_x(62.5,direction+15);
    5. y += lengthdir_y(62.5,direction+15);
    6. image_angle = direction;
    7. }


    MfG
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Leider macht der code

    GML-Quellcode

    1. with(obj_auto) {
    2. //Das ist im prinzip eine Schleife, die alle deine Instanzen liefert. Also wenn du da ein show_message("test"); haben würdest, würde auch dies x-Mal ausgegeben werden.
    3. //Du bist jetzt in den seperaten Instanzen und somit kannst du mit x/y die Koordinaten setzen:
    4. x += lengthdir_x(62.5,direction+15);
    5. y += lengthdir_y(62.5,direction+15);
    6. image_angle = direction;
    7. }

    alles noch schlimmer alle objekte drehen und bewegen sich so wie sie wollen.

    Ich habe ein Beispiel mit meinem code hochgeladen vielleicht hilft das.
    Dateien
    • Project1.gmz

      (899,63 kB, 353 mal heruntergeladen, zuletzt: )
    Meine Webseite: jesoftmedia.de
  • Hab leider keine Visual Studio. Wenn du aber das ganze in eine Game Maker 8 fähige Datei schmeißt um den Fehler neu zu simulieren, kann ichs mir mal anschaun.

    Edit: Natürlich meinte ich Game Maker Studio.

    LG
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • So ich hab jetzt dein Problem verstanden und auch gelöst.
    Dein großes Problem ist:
    • Die Scheinwerfer wissen nicht, zu welchem auto sie gehören.
    • Wenn ein Auto den Pfad beendet, werden alle Scheinwerfer zerstört. (Auch die, die zu andere Autos gehören)


    Code den ich geändert habe:
    Du musst im Create des obj_autos, den scheinwerfern sagen, zu welchem Auto sie gehören. Ich hab das mal so gelösst:

    GML-Quellcode

    1. vl = instance_create(x,y,obj_auto_scheinwerfer_vl);
    2. vl.auto = id;
    3. vr = instance_create(x,y,obj_auto_scheinwerfer_vr);
    4. vr.auto = id;


    Außerdem musst du dann im Destroy-Event des obj_autos noch sagen, dass nur die Scheinwerfer für dieses Auto zerstört werden dürfen.

    GML-Quellcode

    1. with (vl)
    2. {
    3. instance_destroy();
    4. }
    5. with (vr)
    6. {
    7. instance_destroy();
    8. }


    Und im End-Step-Event beider Scheinwerfer musst du noch obj_auto mit auto austauschen. Weil auto verweist jetzt auf die ID des Autos, das diesen Scheinwerfer erzeugt hat.

    GML-Quellcode

    1. x=auto.x+lengthdir_x(62.5,auto.direction+15);
    2. y=auto.y+lengthdir_y(62.5,auto.direction+15)
    3. image_angle=auto.direction;
    4. //bzw. für anderen Scheinwerfer:
    5. x=auto.x+lengthdir_x(62.5,auto.direction-15);
    6. y=auto.y+lengthdir_y(62.5,auto.direction-15)
    7. image_angle=auto.direction;


    LG
    Dateien
    • Beispiel.gmk

      (15,34 kB, 343 mal heruntergeladen, zuletzt: )
    • Beispiel.gmk

      (15,34 kB, 354 mal heruntergeladen, zuletzt: )
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.