Animierten Spieler bewegen mit sich ändernden Sprites

  • GM 8

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

  • Animierten Spieler bewegen mit sich ändernden Sprites

    Hallo Zusammen

    Mein momentanes Spiel soll im 45 Grad winkel sein und die spielfigur ist aus acht verschiedenen richtungen zu sehen. nun will ich dass sich das objekt spieler in nur einem objekt stattfindet, sich aber eine flüssige bewegung erstellt. die steuerung erfolgt mit WASD.
    nochmal genauer zu den vorhandenen sprites: jeweils einen animierten wo der spieler nach rechts, links, vorne, hinten und jeweils die mitte dazwischen und einmal dasselbe wo der spieler nur steht und in die jeweilige richtung guckt. hoffe ich hab euch alle infos gegeben und dass ihr mir helfen könnt.

    danke schonmal
  • da musst du schon genauer ins detail gehen

    weißt du nicht wie man ein objektsprite ändert?
    brauchst du animationen?
    hast du probleme mit der objektbewegung im raum?
    oder ist es gar die kollision die dir zu schaffen macht?

    wenn du nicht etwas bestimmtes fragst oder quellcode zeigst der fehler hervorruft kann dir keiner helfen ;)
  • ich hab euch mal eine datei mit den vorhandenen sprites angehängt. hoffe ihr könnt es mir so einstellen (vielleicht auch mit erklärung was was bedeutet) dass der spieler flüssig läuft und sich die sprites flüssig ändern.

    danke schon mal
    Dateien
    • beispiel.rar

      (97,97 kB, 72 mal heruntergeladen, zuletzt: )
  • mach einfach das in den step event vom Spieler:
    Spoiler anzeigen

    GML-Quellcode

    1. //Tasten abfrage, Spieler bewegung
    2. if keyboard_check(ord('D')){x+=4}
    3. if keyboard_check(ord('A')){x-=4}
    4. if keyboard_check(ord('S')){y+=4}
    5. if keyboard_check(ord('W')){y-=4}
    6. //Spritesetzung
    7. if x > xprevious//wenn x größer als die letzte Position ist(also wenn sich der Spieler nach rechts bewegt. xprevious ist immer die x position von dem vorherigen step)
    8. {
    9. if y > yprevious{sprite_index = spieler_gehen_rechtsunten lastdir = 7}//das gleiche bei yprevious also hier wenn er nach rechtsunten gegangen ist
    10. else if y < yprevious{sprite_index = spieler_gehen_rechtsoben lastdir = 1}//lastdir ist die Variable in welche richtung der Spieler als letztes läuft
    11. else{sprite_index = spieler_gehen_rechts lastdir = 0}
    12. }
    13. else if x < xprevious//wenn er nach links läuft
    14. {
    15. if y > yprevious{sprite_index = spieler_gehen_linksunten lastdir = 5}
    16. else if y < yprevious{sprite_index = spieler_gehen_linksoben lastdir = 3}
    17. else{sprite_index = spieler_gehen_links lastdir = 4}
    18. }
    19. else if y > yprevious//wenn er nach unten läuft
    20. {
    21. if x > xprevious{sprite_index = spieler_gehen_rechtsunten lastdir = 7}
    22. else if x < xprevious{sprite_index = spieler_gehen_linksunten lastdir = 5}
    23. else{sprite_index = spieler_gehen_unten lastdir = 6}
    24. }
    25. else if y < yprevious//wenn er nach oben läuft
    26. {
    27. if x > xprevious{sprite_index = spieler_gehen_rechtsoben lastdir = 1}
    28. else if x < xprevious{sprite_index = spieler_gehen_linksoben lastdir = 3}
    29. else{sprite_index = spieler_gehen_oben lastdir = 2}
    30. }
    31. else//Wenn der Spieler nicht läuft
    32. {
    33. if lastdir = 0{sprite_index = spieler_stehen_rechts}
    34. if lastdir = 1{sprite_index = spieler_stehen_rechtsoben}
    35. if lastdir = 2{sprite_index = spieler_stehen_oben}
    36. if lastdir = 3{sprite_index = spieler_stehen_linksoben}
    37. if lastdir = 4{sprite_index = spieler_stehen_links}
    38. if lastdir = 5{sprite_index = spieler_stehen_linksunten}
    39. if lastdir = 6{sprite_index = spieler_stehen_unten}
    40. if lastdir = 7{sprite_index = spieler_stehen_rechtsunten}
    41. }
    Alles anzeigen


    und die lastdir Variable musst du noch im Create event deklarieren.
    Also einfach da lastdir = 0 reinschreiben

    Hoffe ich habs gut erklärt.
    Twitter: @BytingGames