Probleme mit image_number

  • Probleme mit image_number

    Also erstmal hallo an alle,


    ich versuche mich gerade darin ein Kampfsystem für mein Spiel zu erstellen, also habe ich dem Gegner durch eine Kolisions-Abfrage die entsprechenden Schadenspunkte abziehen lassen. Nun soll der Gegner aber nicht bei jedem "Step" Schaden kriegen, sondern nur einmal während der "Angriff" Bildabfolge. Also habe ich probiert mit image_number zu arbeiten, nun zeigt mit der PC aber immer nur image_number 1 und 15 an, als gäbe es die restlichen dazwischen garnicht... Hat jemand einen Vorschlag wie ich das mit dem Timing im meinem Spiel besser geregelt kriegen könnte? Im Voraus Vielen Dank für alle Tipps :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ChrisR.o.T. ()

  • eigenlich müsste er schon alle i9mage_numbers anzeigen .... warscheinlich läuft die animtion nur so schnell ab, dass uds nicht siehts...
    ich würd das allerdings per variable machen....

    Quellcode

    1. if !(schonGetroffen)
    2. {
    3. // Schaden verursachen
    4. schonGetroffen = true
    5. }

    und dann bei animaton_end (man kanns natürlich auch über alarm regeln

    Quellcode

    1. schonGetroffen = false
    www.glowingorb.de
    „Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO

    (Schachweltmeister Emanuel Lasker)
  • das is ja das merkwürdige. meine sprite abfolge für angreifen hat 15 bilder, als ich image_number getestet habe ( z.B. if image_number == 11) {tue sonswas} wurde tue sonstwas nie ausgeführt. mein raumspeed ist 30, würde mich wundern wenn das das problem verursachen würde. die idee mit schon getroffen hatte ich auch schon, aber ich verstehe nicht ganz wie das mit dem alarm event funktioniert. wie kann ich den "schon getroffen" wert auf false setzten wenn die animation ihr ende erreicht?

    Hier mal den Code für den Gegner-mit-Spieler-Kollisions-Event:
    {
    if ( ObjWarrior.image_number == 15)
    {
    global.EnemyLP = global.EnemyLP - global.Damage;
    }
    }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ChrisR.o.T. ()

  • ObjWarrior.image_number gibt die Anzahl der Sprites an, in deinem Fall 15.
    Die verändert sich nicht, da es immer 15 Sprites sind.

    Das was du brauchst ist ObjWarrior.image_index .
    Dies gibt das aktuelle Sprite an.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • Hmm... um nicht nochmal einen überlüssigen Thread zu erstellen dachte ich poste ich nochmal hier hinein. Ich hab jetzt noch das Problem das alle ObjGegner - Instanzen nicht unabhängig voneinander sind. D.h. wenn ich am Anfang mehrer Instanzen in dem Raum erschaffe, einen platt mache sind die anderen auch sofort hinüber.
    (Ich habe jetzt eine ganz normale Variable im Creation Event Namens "ObjGegner.EnemyLP" erschaffen)

    Hier mal der Code:

    Quellcode

    1. {
    2. var ObjGegner.EnemyLP = 100;
    3. }


    Und der für den Schaden:

    Quellcode

    1. {
    2. if ( ObjWarrior.image_index == 11)
    3. {
    4. ObjGegner.EnemyLP = ObjGegner.EnemyLP - global.Damage;
    5. }
    6. }

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von ChrisR.o.T. ()

  • du packst ins creation event von ObjGegner
    folgendes rein:

    Quellcode

    1. Lp = 100;

    Und ins collision Event des ObjWarrios mit dem Gegner:

    Quellcode

    1. {
    2. if (image_index == 11)
    3. {
    4. other.LP = other.LP- global.Damage;
    5. }
    6. }


    p.s. doppelposts sind auch nicht viel besser als "unnötigte threads" - insbesondere weil ein neuer thread hier nicht mal unnötig wäre. Ein Extra Thread wäre überischtlicher gewesen.
    www.glowingorb.de
    „Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO

    (Schachweltmeister Emanuel Lasker)