1x Taste B: kompletten Sprite abspielen

  • 1x Taste B: kompletten Sprite abspielen

    Hallo,
    Ich habe ein 2D- Spiel erstellt (Ansicht: Schräg oben)
    Auf der B- Taste führt die Hauptfigur einen Schlag aus (Der Sprite dafür besteht aus 6 Images)

    Mein Probem:
    Ich muss die Schlagen- Taste gedrückt halten, damit der Schlag- Sprite abgespielt wird.
    Wenn ich loslasse, hört er an der Stelle auf, an der er sich gerade befindet.
    (Also ggf. auch bei Image 3 oder 2, ...)

    Ich will aber nur einmal kurz die Schlagen- Taste (B) drücken, und dann soll der komplette Sprite genau einmal abgespielt werden.
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Du musst doch nur im Press-Key Event der B-Taste den Sprite auf die Schlagani schalten. Dann lässt Du einen Zähler laufen, der so lange dauert wie die Animation und wenn dieser abläuft ist die Schlagtaste wieder verfügbar und die Animation beendet (also du schaltest wieder auf den normalen sprite).

    Überhaupt musst Du beachten, dass Du ein ziemlich komplexes Zählersystem anlegen musst (da du ja etwa nicht laufen darfst während du schlägst). Du müsstest bei jeder Schlaghandlung etwa die Steuerung blockieren.

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

  • Leider weiß ich überhaupt, was ein Zähler oder ein Zählersystem ist und wie es funktioniert.
    Kann mir jemand villeicht erläutern, wie F4LLOUT das gemeint hat.
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Das ist aber eher rumprobieren und ist viel zu aufwändig. Mach ne Variable:

    GML-Quellcode

    1. schlagen = false;
    .
    Wenn du B drückst, wird "schlagen" auf true gesetzt:

    GML-Quellcode

    1. if(keyboard_check_pressed(ord('B')))
    2. {
    3. schlagen = true;
    4. }

    Wenn geschlagen wird:

    GML-Quellcode

    1. if(schlagen==true)
    2. {
    3. sprite_index = spr_SCHLAGANI;
    4. }

    Wenn die Schlaganimation vorbei ist:

    GML-Quellcode

    1. if((image_index > ANZAHL_DER_BILDER && sprite_index = spr_SCHLAGANI) && schlagen==true)
    2. {
    3. image_index = 0;
    4. sprite_index = spr_NORMAL;
    5. schlagen = false;
    6. }

    ...so wird wieder alles zurückgesetzt.
    (Den Rest musst du dann selber machen & anpassen (z.B. image_speed und so)
    mfg Merko

    €dit's: Codes erweitert ;)

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

  • Hier gibt es einige Probleme

    Ich kann ganz normal mit den Pfeiltasten laufen. (So wie vorher auch)
    Wenn ich auf B drücke, wird die Variable "Schlagen" aktiviert.
    Wenn ich jedoch jetzt auf die Pfeiltasten (up, down, left, right) drücke, spielt die Hauptfigur nicht mehr die "Laufsprites" ab, sondern führt den halben "Schlagsprite" aus. Bewegen tut sie sich jedoch noch in die Richtungen.
    Die Pfeiltasten übernehmen sozusagen die Aufgabe der B- Taste.
    Auf der B- Taste passiert jetzt nichts mehr.

    Hat jemand ne Idee?
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Benutzer online 1

    1 Besucher