Problem beim Charakter Movment

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

  • Problem beim Charakter Movment

    Hey Leute,
    Ich habe ein richtig dämliches Problem :heul:

    Quellcode

    1. {
    2. if sprite_index = spr_player_Ll or spr_playerLs
    3. {
    4. sprite_index = spr_playerU
    5. }
    6. if sprite_index = spr_playerU
    7. {
    8. alarm[0] = room_speed*1;
    9. sprite_index = spr_playerRs
    10. }
    11. if sprite_index = spr_playerRs
    12. {
    13. sprite_index = spr_player_Rl
    14. motion_set (0,3);
    15. }
    16. }
    Alles anzeigen

    Wie man sehen kann bin ich noch ein richtiger GML Noob ...
    Ich versuche die ganze Zeit es hinzubekommen das wenn das sprite__index = spr_playerLs oder spr_player_Ll ist das wenn ich dann die rechte Pfeiltaste drücke es auf das sprite_index spr_playerU wechselt eine halbe Sekunde darauf bleibt und zum spr_player_Rl wechselt mit motion_set (0,3) ...
    Ich hoffe ich konnte mein Problem erklähren :)
  • Das Problem liegt hier (unteranderem):

    GML-Quellcode

    1. if sprite_index = spr_player_Ll or spr_playerLs


    der Code wird wie folgt vom Game Maker interpretiert:

    GML-Quellcode

    1. if ((sprite_index == spr_player_Ll) or (spr_playerLs))


    da jeder Wert der gleich oder größer als 0,5 ist, vom Game Maker als true interpretiert wird, kann man auch sagen:

    GML-Quellcode

    1. if ((sprite_index == spr_player_Ll) or (spr_playerLs >= 0.5))


    Wir prüfen ob sprite_index gleich spr_player_Li ist ODER der Wert von spr_playerLs größer als 0.5.

    Richtig heißt das:

    GML-Quellcode

    1. if ((sprite_index == spr_player_Ll) or (sprite_index == spr_playerLs))


    #edit:

    Interpretieren wir den Code weiter:

    GML-Quellcode

    1. if ((sprite_index == spr_player_Ll) or (sprite_index == spr_playerLs)) { //wenn sprite_index spr_playerLl oder spr_playerLs ist
    2. sprite_index = spr_playerU; // setze sprite_index auf spr_playerU
    3. }
    4. if sprite_index = spr_playerU { //wenn das obere zutrifft, trifft gleichzeitig auch das hier zu
    5. alarm[0] = room_speed*1; //setze alarm[0] auf room_speed*1
    6. sprite_index = spr_playerRs; //setzte sprite_index auf spr_playerRs
    7. }
    8. if sprite_index = spr_playerRs { //wenn das erste if oder das zweite if zutrifft, dann
    9. sprite_index = spr_player_Rl; //setze sprite_index auf spr_playerRl
    10. motion_set (0,3); //und rufe motion_set auf
    11. }
    Alles anzeigen


    Code wird immer von oben nach unten aufgerufen, alles in einem Step. Du wechselt also in einem Step drei mal das Sprite und siehst nur das letzte.


    Ich verstehe jetzt deine Reihenfolge nicht richtig, bitte erkläre es mal genauer. :wacko:

    #edit2:

    Probieren wir es mal:

    GML-Quellcode

    1. if ((sprite_index == spr_player_Ll) or (sprite_index == spr_playerLs)) { // wenn das sprite__index = spr_playerLs oder spr_player_Ll ist
    2. sprite_index = spr_playerU; // das sprite_index spr_playerU wechselt
    3. alarm[0] = room_speed * 0.5; //eine halbe Sekunde darauf bleibt
    4. }


    Alarm0-Event:

    GML-Quellcode

    1. sprite_index = spr_player_Rl; // zum spr_player_Rl wechselt
    2. motion_set (0,3); // mit motion_set (0,3)
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von henrik1235 ()