kurz animation abspielen

  • GM 8

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

  • kurz animation abspielen

    also, das is jetzt ein bisschen schwer zu erklären, aber ich probiers:

    also, wenn ich "y" drücke, dann passiert:

    GML-Quellcode

    1. canhit = true

    im stepevent schreibe ich deshalb:

    GML-Quellcode

    1. if canhit = true
    2. {
    3. image_speed=2.5
    4. if dir=8
    5. sprite_index=sword_down // wenn ich mich nach unten bewege, dann kommt der sprite mit dem schwert nach unten
    6. if dir=2
    7. sprite_index=sword_right // dasselbe wie oben nur in richtung: rechts
    8. if dir=4
    9. sprite_index=sword_up //hoch
    10. if dir=6
    11. sprite_index=sword_left // links
    12. alarm[2] = 1
    13. }
    Alles anzeigen


    dann steht in alarm 2:

    GML-Quellcode

    1. canhit = false



    kurze erklärung:
    wenn ich y drücke, wird getestet, in welcher richtung ich bin, dann wird eine animation zur jeweiligen richtung abgespielt(schwertschlag)
    dadurch wird dannach das event wieder beendet, und die normalen sprites verwendet.

    soweit zur theorie.
    doch, in der praxis sieht das anders aus:
    denn es wird nur der erste sprite abgespielt, und wenn ich y gedrückt halte, bleibt dieser sprite...

    könntet ihr mir vl da weiterhelfen?

    PS:
    das grundgerüst meines games ist fast fertig :P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von domis4 ()

  • image_speed=2.5 enntspricht bei einer Animation mit (z.B.) vier Frames 12 Animationsschritten. Wenn du den Alarm auf 1 setzt, zeigt er nur einen dieser Animationsschritte an. Wie henrik1235 bereits sagte, musst du die Zeit des Alarms erhöhen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • GML-Quellcode

    1. if canhit = true
    2. {
    3. image_speed=2.5
    4. if dir=8 {sprite_index=sword_down}
    5. if dir=2 {sprite_index=sword_right}
    6. if dir=4 {sprite_index=sword_up}
    7. if dir=6 {sprite_index=sword_left}
    8. alarm[2] = 10 // bzw Frames der Animation mal image_speed (image_number * image_speed)
    9. canhit=false // Hier hin!
    10. }
    Alles anzeigen


    dann steht in alarm 2:

    GML-Quellcode

    1. // nischt canthit = irgendwas
    2. sprite_index=normales_sprite


    Der vorherige Code aktivierte die If Funktion mit canhit im Stepevent, die solange aktiv bleibt, bis canhit false wird.
    Das bedeutet, in jedem Step wird das Sprite auf NameDesSprites geändert, und das beginnt natürlich mit dem ersten Bild.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Kannst du eventuell ein beispiel hochladen? Das ist ganz schön schwer das alles im Kopf zu machen.

    ggf. ist image_speed=2.5 sehr ungünstig gewählt, da dadurch ein leerer/doppelter frame entsteht.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Wie wärs mit dieser vereinfachung:
    Du nennst die Sprites schwert2, schwert4, schwert 6, schwert8 , nimmst das "press y" event und die variable canhit weg und schreibst im step event

    GML-Quellcode

    1. if(keyboard_check_pressed(ord('Y'))=true && alarm[0]=-1) // er kann nicht schlagen wenn er schon schlägt
    2. {
    3. sprite_index= 'schwert'+string(dir)
    4. image_speed=1/3 // damit die animation 12 frames dauert, muss das image alle 3 frames wechseln
    5. alarm[0]=12;
    6. }
    7. if(alarm[0]>=0) speed=0; // du sagtest das er sich ´nicht bewegen können soll

    und in alarm[0]:

    GML-Quellcode

    1. sprite_index=normal

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von J-L ()

  • Probiers doch einfach aus - mir geht es nicht um irgendeine engine, sondern um dein anfangs geschildertes Problem.
    Ich denke da oft sehr mathematisch, um codes zuvereinfachen, z.b das mit dem schwert2, schwert4, schwert6 schwert8.

    Was allerdings Hilfreich waäre ist, wenn du mir sagst, inwiefern die Spielfigur sich nicht bewegen können soll- soll sie während des schlagens nicht nochmal schlagen können ( was in dem obigen Code enthalten ist) oder sollen sonstige bewegungen geblockt werden (was du z.B. mit einem If- statement ala

    GML-Quellcode

    1. if(alarm[0]=-1)
    2. {
    3. //hier kommt dann die normale Tastenaktion hinein
    4. }

    bei jedem event, das geblockt werden soll, machen kannst.
    wenn er vorher eine bewegung hatte und jetzt stehen bleiben soll, dann ist das auch schon in meinem Code.

    P.S. Ein Fehler in den Ganzen anderen Codevorschlägen war der image_speed 2.5 - das würde bedeuten, dass 2,5 (also immer abwechselnd 2 und 3 gerundet da es kein halbes bild gibt) bilder pro frame wechseln , also mehrere übersprungen werden und die animation bis zum alarm[0]=10 sich mehrmals wiederholen würde, wenn sie (wie du sagtest) aus 4 bildern besteht. Ich weiß ja nicht, ob die Figur beim drücken der y-taste mehrmals hintereinander stockig (wegen der übersprungenen subimages) draufhauen soll...:-)
  • generell sollte es in etwa so sein, dass der Spieler wärend des laufens stehenbleibt.
    das habe ich mitlerweile auch schon so herausgefunden:

    GML-Quellcode

    1. speed=0

    allerdings das mit den vier Bilderchen ist das Große Problem:

    GML-Quellcode

    1. if dir=8 {sprite_index=sword_down}
    2. //usw

    damit sollte gecheckt werden, in welche Position der Spieler gerade ist, und dann das Bild tauscht.


    der Code von dir, bringt mir derzeit 4 Fehlermeldungen an den Kopf geschmissen, die sich im Draw-event befinden
    (welche ich aber noch nicht angeguckt habe :D)

    aber das, dass ich an deinem Code nicht verstanden hab, ist das mit den String´s
    da ich bis jetzt noch nie strings angewendet habe :pinch:
  • Benutzer online 1

    1 Besucher