Problem mit Animationen & Variablen

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

  • Problem mit Animationen & Variablen

    Ich hab mich mal wieder an ein Spiel gewagt und bin dabei auch auf 2 Probleme gestoßen, deren Grund ich nicht ganz nachvollziehen kann:
    Bis jetzt habe ich nur die Spielerfigur ("self"), einen Gegner ("enemy") und einige Bretter ("holz").
    Letztere dienen als Deckung vor den Schüssen des Gegners, sind aber zurzeit noch belanglos.
    Mein Problem liegt im Step-Event der Spielerfigur:
    Einerseits will ich mit folgendem Code die Spielfigur passend zur Laufrichting animieren.
    Spoiler anzeigen
    Code made by interceptor

    GML-Quellcode

    1. switch(floor((direction+45)/90)) {
    2. case 1: sprite_index=self_up_go; break; // 45° - 135°
    3. case 2: sprite_index=self_left_go; break; // 135° - 225°
    4. case 3: sprite_index=self_down_go; break; // 225° - 315°
    5. default: sprite_index=self_right_go; // 315° - 45°
    6. }


    Andererseits will ich auch prüfen, ob sich die Spielfigur bewegt oder ob sie stillsteht.
    Wenn sie sich bewegt, soll die Variable "self_stand" den Wert 1 haben, wenn sie steht, 0.
    Dazu hab ich zuerst per D&D abgefragt, ob die Variable "speed" (die ja meines Wissens gleich der Geschwindigkeit des Objects ist) größer oder gleich 0 ist.
    Ist sie größer als 0, -> "self_stand" wird 1.
    Ist sie gleich =, -> "self_stand" wird 0.

    Hoffe das kam verständlich rüber ^^ , hier noch das Example:

    PS: gesteuert wird Die Spielfigur per Klick mit der RECHTEN Maustaste.

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

  • Dein erster Fehler ist schon mal, dass du den Player nach einem vordefinierten Schlüsselwort (self) benennst. Der zweite ist, dass du im Draw Event immer den gleichen Sprite zeichnest (self_down_stand). Da ich jetzt nicht weiß, wie man das in D&D macht (mit dieser Draw Aktion) als GML Code:

    GML-Quellcode

    1. draw_sprite(sprite_index, -1, x, y);


    Dann kannst du im Step Event noch den Code erweitern:

    GML-Quellcode

    1. switch(floor((direction+45)/90)) {
    2. case 1: sprite_index=self_up_go; break; // 45° - 135°
    3. case 2: sprite_index=self_left_go; break; // 135° - 225°
    4. case 3: sprite_index=self_down_go; break; // 225° - 315°
    5. default: sprite_index=self_right_go; // 315° - 45°
    6. }
    7. image_speed = self_stand;


    Übrigens bei deiner Methode, den Player zu bewegen, wird sich speed niemals auf > 0 ändern. Diese Bewegung passt auch nicht wirklich zu dem Spiel, was du gerade anscheinend machst. Arbeite lieber mit Keyevents und h/vspeed o.Ä.
    Falls du trotzdem bei der Methode bleiben willst, arbeite mit motions und distance_to_object - da kannst du den speed Wert selbst kontrollieren.

    Btw. der sprite_left da ist die Origin noch nicht auf 10 | 28 eingestellt. Und nur so als Tipp: Du kannst im Step Event die 4. D&D Aktion (dort wo du das Gegenteil von der 2. Abfragst) einfach durch else ersetzen ;)
    Außerdem hast du das an vielen Stellen sehr unglücklich gelöst, aber das ist deine Entscheidung, wie du es machst.

    mfg Critical