RE 8 Sprites statt 4

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

  • RE 8 Sprites statt 4

    ÄH,
    ich war wohl ein bischen voreilig.
    Es klappt zwar, dass sich die Figur in 8 Richtungen dreht und auch die pssenden Sprites anwendet , jedoch hört sie nicht mit den Laufbewegungen auf.

    Also:
    Das Spiel startet und meine Figur ist im Mittelpunkt des Bildes.
    Sie spielt die Sprites aber nicht erst ab, wenn man z.B. oben drückt,
    sondern sie läuft von spielbeginn an und stoppt nicht, wenn man aufhört, z.B. oben zu drücken.

    Ich bitte nochmals um Hilfe
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • im createvent musste dann image_speed=0 setzen.
    Und bei den Key-Releaseevents ebenfalls, damit die Animation stoppt. Falls du willst das es zusätzlich auch auf den ersten image zurückspringt musste dann noch zusätzlich image_index=0 setzen
  • Ich habe das gemacht (oder besser gesagt, versucht) was du vorgeschlagen hast.
    Hat aber nicht so funktioniert.


    Also, ich beschreibe jetzt mal, was ich gemacht habe.


    Im Step Event:


    if (keyboard_check(vk_up))
    sprite_index=spr_link_up;

    if (keyboard_check(vk_down))
    sprite_index=spr_link_down;

    if (keyboard_check(vk_right))
    sprite_index=spr_link_re;

    if (keyboard_check(vk_left))
    sprite_index=spr_link_li;

    if (keyboard_check(vk_up) && keyboard_check(vk_right))
    sprite_index=spr_link_sro;

    if (keyboard_check(vk_up) && keyboard_check(vk_left))
    sprite_index=spr_link_slo;

    if (keyboard_check(vk_down) && keyboard_check(vk_right))
    sprite_index=spr_link_sro;

    if (keyboard_check(vk_down) && keyboard_check(vk_left))
    sprite_index=spr_link_slo;

    ---------------------------------------------------------------------------------------------------------


    Was muss ich deiner meinung nach noch machen
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Also ich erkenne da keinen Ansatz drinnen das du es versucht hast ;)

    ist es alles was im stepevent steht?
    irgendwo musste doch image_speed definiert haben damit die animation läuft... standartmäßig ist image_speed schon auf 1 gestellt, aber dann würde die laufnaimation doch viel zu schnell ablaufen oder haste etwa jede image10mal hintereinander gesetzt?
  • Es geht auch einfacher: Nämlich mit bitwise addition, also wie folgt:

    Quellcode

    1. xx=abs(x-mouse_x) * 0.25 // 0.25 :Bewgungsgeschwindigkeit
    2. yy=abs(y-mouse_y) * 0.25
    3. ind = 0
    4. if (x>mouse_x) {x-=xx; ind += 1} // nach links
    5. if (x<mouse_x) {x+=xx; ind += 2} // nach rechts
    6. if (y>mouse_y) {y-=yy; ind += 4} // nach oben
    7. if (y<mouse_y) {y+=yy; ind += 8} // nach unten

    Anstatt von Pfeiltasten wird hier die Maus für die Steuerung benutzt. Das gefällt mir persönlich tausendmal besser.
    In Bezug auf Deine Frage aber, beachte die Variable ind. Diese beinhaltet am Ende sowohl die x- als auch die y-Richtung:

    0 keine Bewegung
    1 links
    2 rechts

    4 hoch
    5 links,hoch
    6 rechts,hoch

    8 runter
    9 links,runter
    10 rechts,runter

    Anhand dieses Wertes kannst Du jetzt das Sprite auswählen. Entweder mit if-Abfragen, oder indem Du am Anfang ein Array erstellst:

    Quellcode

    1. spr[0] = sprite0
    2. spr[1] = sprite1
    3. spr[2] = ...

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

  • Ich glaub du hast sein problem nicht verstenden... das die passenden sprites bei den entsprechenden Richtungen kommen funktioniert ja bereits bei ihm... sein problem ist das die ganze zeit die laufanimation abgespielt wird.
  • Ähm... gibt's kein "keyboard_release"? Dann müsste man die obrige Liste mit den ganzen Key-Events nur um diese ergänzen und dort einzig image_speed auf 0 setzen. Ich verstehe das Problem um ehrlich zu sein nicht. Wenn man so viel hat wie da oben angegeben ist, dann ist der Rest eigentlich ein Kinderspiel.
  • Original von TrunX
    Ich glaub du hast sein problem nicht verstenden... das die passenden sprites bei den entsprechenden Richtungen kommen funktioniert ja bereits bei ihm... sein problem ist das die ganze zeit die laufanimation abgespielt wird.

    Ach so, na dann mach doch jeden step
    image_speed = 0.2 // oder so
    if speed = 0 image_speed = 0

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

  • Wieso nicht einfach speed und image_speed vorher auf 0 setzen? Hab das ganze mal schnell zusammengefügt inklusive der Bewegung. Wenn du die schon wo anders drinnen hast, benötigst du die nicht mehr.

    GML-Quellcode

    1. if (speed==0) // wenn sich das Objekt nicht bewegt
    2. image_index=0; // Subimage 0 wählen (stehender Charakter)
    3. speed=0; // Geschwindigkeit zurücksetzen
    4. image_speed=0; // Animation pausieren
    5. if (keyboard_check(vk_up))
    6. {
    7. sprite_index=spr_link_up;
    8. image_speed=0.2; // Animation starten
    9. direction=90; // Richtung einstellen
    10. speed=3; // Das Objekt bewegen
    11. }
    12. if (keyboard_check(vk_down))
    13. {
    14. sprite_index=spr_link_down;
    15. image_speed=0.2;
    16. direction=270;
    17. speed=3;
    18. }
    19. if (keyboard_check(vk_right))
    20. {
    21. sprite_index=spr_link_re;
    22. image_speed=0.2;
    23. direction=0;
    24. speed=3;
    25. }
    26. if (keyboard_check(vk_left))
    27. {
    28. sprite_index=spr_link_li;
    29. image_speed=0.2;
    30. direction=180;
    31. speed=3;
    32. }
    33. if (keyboard_check(vk_up) && keyboard_check(vk_right))
    34. {
    35. sprite_index=spr_link_sro;
    36. image_speed=0.2;
    37. direction=45;
    38. speed=3;
    39. }
    40. if (keyboard_check(vk_up) && keyboard_check(vk_left))
    41. {
    42. sprite_index=spr_link_slo;
    43. image_speed=0.2;
    44. direction=135;
    45. speed=3;
    46. }
    47. if (keyboard_check(vk_down) && keyboard_check(vk_right))
    48. {
    49. sprite_index=spr_link_sro;
    50. image_speed=0.2;
    51. direction=315;
    52. speed=3;
    53. }
    54. if (keyboard_check(vk_down) && keyboard_check(vk_left))
    55. {
    56. sprite_index=spr_link_slo;
    57. image_speed=0.2;
    58. direction=225;
    59. speed=3;
    60. }
    Alles anzeigen
    Einige meiner Spiele:
  • Danke,
    hat aber auch nicht geklappt.
    Wenn ich jetzt in eine Richtung drücke, verändert die Figur zwar Ihre Position,
    aber die Animationen der vesch. "Laufbewegungen der Sprites wird nicht abgespielt.

    IIII NNNNEEEEEEEEEEEEEDDDDD HHHHHEEEELLLLPPPPPPPPPPP
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Original von interceptor
    Wieso nicht einfach speed und image_speed vorher auf 0 setzen? Hab das ganze mal schnell zusammengefügt inklusive der Bewegung. Wenn du die schon wo anders drinnen hast, benötigst du die nicht mehr.

    GML-Quellcode

    1. if (speed==0) // wenn sich das Objekt nicht bewegt
    2. image_index=0; // Subimage 0 wählen (stehender Charakter)
    3. speed=0; // Geschwindigkeit zurücksetzen
    4. image_speed=0; // Animation pausieren


    ich weiß nicht, mir erscheit der teil hier nicht so logisch... ich kann mit nicht zusammendichten was das heißt. ich mein, es wäre dich besser es so abzufragen: (??)

    GML-Quellcode

    1. if (speed=0) // wenn sich das Objekt nicht bewegt
    2. {
    3. image_index=0; // Subimage 0 wählen (stehender Charakter)
    4. image_speed=0; // Animation pausieren
    5. }
    hallo erstmal....
  • @fantscher: das macht schon Sinn. Betrachte mal nur die unteren zwei Zeilen. Damit wird vor jeder Tastenabfrage die Bewegung und die Bewegungsanimation erstmal gestoppt. Damit spar ich mir irgendwelche Release-Events oder Umwege über Alarme oder sonstiges. Die ersten zwei Zeilen sind nur dazu da, festzustellen, ob im letzten Step keine Taste gedrückt wurden und dann nur das erste Subimage zu zeichnen, damit die Figur nicht mit ausgestrecktem Bein oder so stehenbleibt. Das mach ich extra, sonst wird gar nichts animiert, wenn jedesmal das Subimage 0 angewählt wird...

    @Baddi:Schau dir mal meinen Dateianhang an, da hab ich dein Script mal eingebaut. Übrigens hast du rechts-unten und links-unten vergessen...
    Dateien
    • bewegung.zip

      (3,49 kB, 94 mal heruntergeladen, zuletzt: )
    Einige meiner Spiele:
  • Äh...
    ich weiß ja nicht,
    aber könnte mir nicht jemand mal versuchen zu erklären warum das nicht funktioniert und mir dann ne Lösung anbieten??
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • nein,
    tut mir leid,
    aber dafür ist das spiel zu groß.
    ich könnte zwar alles bis auf die Hauptfigur löschen...
    aber das mache ichauch nicht, da mir die Sprites für die Hauptfigur meiner Meinung nach sehr gut gelungen sind und ich nicht möchte, dass irgendeiner einfach meine Sprites übernimmt.

    ich probier noch mal denn Vorschlag von interceptor aus.
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Ich habe ja auch ANDERES mit eingeschlossen^^
    Du könntest doch auch irgendwelche sprites nehmen (z.B. eine Kugel mit Pfeil, wo man erkennen kann, in welche Richtung sie zeigt ;) )

    €dit: Dieses dann uploaden und das Problem so zeigen, denn so ist die Chance, dass das Prob gelöst wird, viel viel größer^^

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

  • Das ist nicht mehr nötig.
    Der Vorschlag von interceptor war vollkommen richtig.
    Ich hatte am ende die Klammer vergessen zu markieren....
    Trotzdem nochmals vielen Dank an alle.
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte