Ein Objekt - Viele Instanzen - Eigene Variablen - Arrays?

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

  • Ein Objekt - Viele Instanzen - Eigene Variablen - Arrays?

    So, ich denke der Titel sagt alles. Ich arbeite an einem Spiel, in dem ich viele Feinde eines Typs haben will nur das Problem ist: Jeder muss seine eigene HP-Variable haben und ich weiss nicht wie ich es am besten anstellen soll.

    Klar, ich könnte nun einfach viele geradezu identische Objekte mit verschiedenen Variablen-Namen machen, doch das scheint mir etwas arm...

    Also will ich lieber jeder Instanz eine eigene ID geben und passend zur ID soll jede auch eigene Variablen erhalten. Als ich das einem Freund sagte, meinte er, dass man solche Probleme durch Arrays löse. Nun, ich verstehe Arrays einigermaßen... in Schleifen! Ich habe aber natürlich vor die Feinde zu platzieren, per Auslöser erscheinen zu lassen etc. und dann funktioniert das was ich über Arrays weiss nicht mehr. Ich habe schon die Sufu benutzt, aber da kamen keine so konkreten Antworten auf mein Problem (bzw. die lagen schon zig Seiten zurück). Kann mir also jemand in der Theorie aber mit schönen GML Erläuterungen mitteilen, wie ich es hinbekomme jeder weiteren Instanz eines Objekts eigene Variablen zu geben? (und jede seltsame variable wie "yabbadababl" bitte danach auch irgendwie defnieren, sonst raff ich die ganz und garnicht!).

    Danke im Vorraus.
  • Korrigiere mich wenn ich es falsch verstanden hab. Du hast einen Gegner. Dieser kann aber unterschiedliche HP (maximale?) haben. Meinst du sowas hier?

    GML-Quellcode

    1. repeat(enemy_number)
    2. {
    3. my_enemy=instance_create(x,y,enemy)
    4. my_enemy.HP=1+round(random(29))
    5. }


    Das hier erstellt eine enemy_number Anzahl von Gegnern die eine zufällige Anzahl von HP haben die von von 1 bist 30 reicht.
  • Hä wenn du es so meinst:
    Mach doch ne Variable in dem CREATION CODE ( Achtung: nicht das Create Event! Room -> Objekt mit STRG und rechter Maustaste klicken -> Creation Code) eines objektes is doch eigentlich einfach.^^
    ALSO:

    GML-Quellcode

    1. HP = 100
    dann machste das im CREATE EVENT des "Monsters":

    GML-Quellcode

    1. health = HP

    Nun kannste jeder instanz im room einen eigenen Wert zuweisen.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Merko ()

  • Oha, ich wollte schon schreiben Ihr hättet das beide nicht verstanden, aber Merkos Lösung ist genau das was ich brauche (denke ich).

    €dit: Jetzt habe ich das schon so oft umgeschrieben, aber mir ist doch noch ein Problem eingfallen: Wenn ein Feind getroffen wird und ich will ganz konkret seine HP-Variable und nicht die aller Feinde des selben Typs senken, wie erreiche ich das?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von F4LL0UT ()

  • in das collision event von der kugel mit dem Feind käme dann

    GML-Quellcode

    1. other.hp-=damage;
    2. if(other.hp<=0)
    3. {
    4. with(other)
    5. {
    6. instance_destroy();
    7. }}
    8. instance_destroy();


    eher empfehlen würde ich jedoch, das collision event des Feindes zu nehmen, anstatt dem der Kugel.
    das sähe dann so aus:

    GML-Quellcode

    1. hp-=other.damage;
    2. if(hp<=0)
    3. {
    4. instance_destroy();
    5. }
    6. with(other)
    7. {
    8. instance_destroy();
    9. }


    hat den Vorteil, das man so leichter z.b. unverwundbare Feinde bauen kann, Feine, durch die kugeln einfach durchgehen oder die sonst irgendwie anders auf beschuss reagieren lassen kann.

    edit: kleinen Logikfehler behoben :P

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