object_index Problem

  • object_index Problem

    Nabend!
    Hab da mal wieder n kleines Problemchen; vermutlich seh ich nur vor lauter Bäumen den Wald nich mehr, aber ich komm einfach nicht auf meinen Fehler!

    Also, wenn mein Player-Bullet die Monster trifft, wird natürlich Blut erzeugt. Alle Monster haben als parent "obj_monsters". Nun habe ich einfach beim Player-Bullet programmiert, dass wenn es auf eine Instanz von obj_monsters trifft, es Blut kreiert. so weit, so gut.
    Nun gibt es jedoch EIN Monster (Monster 3), bei dem KEIN Blut kreiert werden soll. Also habe ich aus diesem Code

    GML-Quellcode

    1. if(collision_line(xprevious,yprevious,x,y,obj_monsters,1,1))//Triffst Du Monster...
    2. {
    3. script_blood_low(x,y);//...lass Blut spritzen und...
    4. instance_destroy();//...zerstör Dich anschließend selbst.
    5. }

    folgenden Code gemacht:

    GML-Quellcode

    1. if(collision_line(xprevious,yprevious,x,y,obj_monsters,1,1))//Triffst Du Monster...
    2. {
    3. if(other.object_index!=obj_monster3) //außer es ist ein Monster 3
    4. {
    5. script_blood_low(x,y);}//...lass Blut spritzen und...
    6. instance_destroy();//...zerstör Dich anschließend selbst.
    7. }
    8. }


    jedoch spritzt weiterhin Blut wenn Monster 3 vom Player-Bullet getroffen wird, obwohl ich es auch an keiner anderen Stelle programmiert habe, dass es das tun soll :/.
    Hab ich irgendwie die Verwendung von object_index missverstanden oder was mache ich falsch?!
  • dein problem ist, das other nur in collsion events funktioniert, da es die id der Instanz zurückgibt, die mit der ausführenden instanz interagiert hat (z.b. durch kollision oder mit dem with statement)
    Bei dir wird jedoch nur überprüft, ob in der flugbahn der kugel ein gegner befindlich ist.
    Ist dies der fall, zerstört sie sich.
    Ohne eine kollision oder ähnlichem.
    daher sollte other immer 0 (oder was auch immer der Standardwert für other ist) betragen und 0 ist halt nicht die id von monster nummer 3.
  • Ich konnte nicht erkennen ob damit dein Problem schon gelöst ist. Wenn nicht müsste es so gehen:

    GML-Quellcode

    1. var col;
    2. col = collision_line(xprevious,yprevious,x,y,obj_monsters,1,1);
    3. if (col >= 0)//Triffst Du Monster...
    4. {
    5. if (col.object_index != obj_monster3) //außer es ist ein Monster 3
    6. {
    7. script_blood_low(x,y); //...lass Blut spritzen und...
    8. instance_destroy(); //...zerstör Dich anschließend selbst.
    9. }
    10. }
    Alles anzeigen


    EDIT: Upps... Ich könnte schwören es war vorhin noch nicht als gelöst markiert... sry.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Bl@ckSp@rk ()

  • Benutzer online 1

    1 Besucher