Animation starten nach sprite_index?

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

  • Animation starten nach sprite_index?

    Hallo :)

    Ich habe eine Idle, eine Sprung und eine Lauf Animation. Standartmäßig ist man natürlich im Idle. Wenn man sich aber bewegt setze ich den Sprite/ die Animation mit sprite_index auf die Lauf Animation. Das Problem ist jetzt, das nur das allererste Bild der Lauf Animation gezeigt wird. Mit image_speed kann ich es auch nicht beheben. Wie fixe ich das, oder muss ich einen anderen Befehl nutzen?

    Danke an alle antworten :D
  • dafür brauchen wir deinen code... ohne code können wir nicht sehen was du fürn fehler eingebaut hast :D... wenn du echt alles richtig gemacht haben solltest + image_speed ist nicht 0 dann kann ich mir nur vorstellen das du entweder kein spritesheet benutzt bzw. keine mehrere sprites oder dein image_speed doch irgendwo irgendwie auf 0 gesetzt wird
    Wir stehen zusammen und wir fallen zusammen
  • Also Eddysoulo, hier ist der Code... Ich befinde mich grad in dem Raum und in der Variable global.mechanik = 1 :D
    Ich habe es grad auch mit image_index anstatt sprite_index probiert, geht aber auch nicht...

    ///Mechaniken

    image_speed = 0.2

    if global.intro = 1
    {
    hspeed = 3
    vspeed = 0
    }
    else
    {
    hspeed = 0
    vspeed = 0
    }

    if global.mechanik = 1
    {

    //Springen
    if keyboard_check_pressed(ord("vk_space"))
    {
    vspeed = 4
    image_speed = 0.2
    sprite_index = Deamon_Jump
    }
    else
    {
    image_index = Deamon_Idle
    }


    //Links laufen
    if keyboard_check_direct(ord("A"))
    {
    hspeed = -3
    image_speed = 0.2
    sprite_index = Deamon_Walk
    }
    else
    {
    sprite_index = Deamon_Idle
    }
    //Rechts laufen
    if keyboard_check_direct(ord("D"))
    {
    hspeed = 3
    image_speed = 0.2
    sprite_index = Deamon_Walk
    }
    else
    {
    sprite_index = Deamon_Idle
    }
    }
  • ich würde das lieber alles schön seperat machen also würde ich den code so aufbauen

    GML-Quellcode

    1. var recht = keyboard_check(ord('D'));
    2. var links = keyboard_check(ord('A'));
    3. var jump = keyboard_check_pressed(vk_space);
    4. if global.intro = 1{
    5. hspeed = 3
    6. vspeed = 0
    7. }else{
    8. hspeed = 0
    9. vspeed = 0
    10. }
    11. if (jump){
    12. vspdeed = 4;
    13. image_speed = 0.2;
    14. sprite_index = Deamon_Jump;
    15. }
    16. if (left){
    17. sprite_index = Deamon_Walk;
    18. image_xscale = -1;
    19. hspeed = -3;
    20. image_speed = 0.2;
    21. }
    22. if (right){
    23. sprite_index = Deamon_Walk;
    24. image_xscale = 1;
    25. hspeed = 3;
    26. image_speed = 0.2;
    27. }
    28. if (!left) && (!right){
    29. sprite_index = Deamon_Idle;
    30. }
    Alles anzeigen


    Die Tatsache warum er den walk nicht macht ist weil du sagst else sprite_index = deamon_idle und das mehrmals heisst also du drückst zwar z.B nach links aber drückst ja nicht nach rechts oder springst nicht somit wird das else bei den beiden gestartet und du hast deine idle animation
    Wir stehen zusammen und wir fallen zusammen
  • Hallo,
    image_index statt sprite_index löst das Problem überhaupt aus, wobei dies wahrscheinlich nicht der Hauptgrund ist.
    sprite_index ist das Sprite und image _index das Frame vom sprite.

    Nice to know:
    Alle Dinge im RessourceTree, in dem Fall Sprites, werden einfach beginnend mit 0 durchnummeriert. Ist beispielsweise dein Sprite Daemon_Walk an der zweiten Position im RessourceTree, so beinhaltet die sogenannte Konstante (schreibgeschützte Variable) Daemon_Walk im Code 1.
    Die Frames eines Sprites werden auch ab 0 durchnummeriert. Setzt du jetzt den image_index auf ein Sprite so setzt du das Frame auf die Nummer des sprites, sodass das Frame mit image_speed nicht weiter gezählt werden und die Animation feststeht.
    Index steht auch eigentlich auch immer für eine Zahl/Durchnummerierung.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • @Husi012:

    ​Er gibt doch aber Konstanten an. (Daemon_Walk ​) Das ist ja auch viel übersichtlicher als Zahlen mit einem Index (der von einer Ressource-Tree-Position abhängig ist).
    @FaZe GradoN: Ja wie "Husi012" schon schrieb hast du im "else" deiner Sprunganweisungen einen kleinen Patzer: hier:
    sprite_index statt image_index

    ​Außerdem hat Eddysoulo das Thema ja schön gelöst.

    ​Ein "else" kann man halt mal schnell Übersehen.

    ​So, das war nun auch mein 71 (diesmal nicht soviel sagender) Beitrag.
  • @ Weihnachtswichtel
    Meine Absicht war nur, zu erklären wie sich das verhält, wenn man dem image_index ein Sprite zuweist.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • @Husi012: Ja ist mir bewusst.
    @Eddysoulo : Dein Beispielcode ist aber eigentlich auch etwas unschön (fehlerhaft).*

    *

    Quellcode

    1. if (!left) && (!right){
    2. sprite_index = Deamon_Idle;
    3. }


    Was ist denn nun wenn man Springt und zur Seite drückt ? Genau, eine hässliche Laufanimation!

    @FaZe GradoN: Tipp: Grenze deine Ausnahmen mehr ein /bzw. benutze z.B. : "vk_nokey"
  • wieso ? im code steht doch wenn nicht links gedrückt wird und nicht rechts dann idle :D... bzw. bin ich da jetzt einfach nicht ins detail eingegangen, da ihm ja mein schreibstyl sowieso nicht passt :D wäre nur unnötiges getippe, ich hätte jetzt auch genau schreiben können das wenn man am boden ist diese sprites benutzt werden sollen und wenn man springt (springen) und dann wenn man fällt fallen .D... aber für was :D
    Wir stehen zusammen und wir fallen zusammen