8 Sprites statt 4

  • 8 Sprites statt 4

    Hi,
    bei meinem Spiel (Ansicht wie bei Pokemon, also von schräg oben)
    habe ich ein Problem.

    Ich möchte das meine Hauptfigur in alle 8 Richtungen in 8 verschiedene Sprites wechselt.

    Im Moment sieht es bei mir so aus:

    Tasten:

    oben
    sprite_up


    unten
    sprite_down


    rechts
    sprite_right


    links
    sprite_left





    Es soll aber so aussehen:


    Tasten:

    up
    sprite_up


    up + right
    sprite_schräg_up_right


    up + left
    sprite_schräg_up_left



    down
    sprite_down


    down + right
    sprite_schräg_down_right


    down + left
    sprite_schräg_down_left



    right
    sprite_right

    left
    sprite_left











    Also, ich brauche für jede der 8 Richtungen einen anderen Sprite.

    Wäre nett, wenn ihr mir dazu mit dem Quelltext helfen könntet.


    Danke..
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte

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

  • hab keien ahnung wie du die bewgungen gelöst hast aber diese methdoe sollte auch wenn du es zusätzlich zu deinen jetzigen tastenevents tust laufen:

    GML-Quellcode

    1. if keyboard_check_pressed(vk_up)
    2. sprite_index=sprite_up
    3. if keyboard_check_pressed(vk_up) && keyboard_key_pressed(vk_right)
    4. sprite_index=sprite_schräg_up_right
    5. //etc.


    EDIT: Mist zu spät... kann dich nicht sein das ich so lang daran geschrieben habe? oO
  • Nein, geht gar nicht.
    ich brauche doch auch einen Befehl für die Sprites, die man von schräg hinten sieht und nicht nur von hinten, vorne rechts und links.

    Ihr habt mir nur Beispiele mit zB. vk_up genannt.
    ich brauche so etwas wie : vk_up and vk_down oder, ihr könnt mir andere Befehle/ Möglichkeiten sagen

    Also wo man zB. diese Befehle kombiniert.

    (wenn es so was gibt natürlich)

    Versteht ihr, was ich meine.
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • ich brauche doch auch einen Befehl für die Sprites, die man von schräg hinten sieht und nicht nur von hinten, vorne rechts und links.

    ich weiß nicht was du hast, aber ich denke, dass dir die beiden genau das erklärt haben. Das && bedeutet ja nichts anderes als AND. Und ob du wirklich vk_up AND vk_down brauchst, musst du dir schon genau überlegen...

    So wären doch alle Richtungen abgedeckt:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up))
    2. sprite_index=sprite_up;
    3. if (keyboard_check_pressed(vk_down))
    4. sprite_index=sprite_down;
    5. if (keyboard_check_pressed(vk_right))
    6. sprite_index=sprite_right;
    7. if (keyboard_check_pressed(vk_left))
    8. sprite_index=sprite_left;
    9. if (keyboard_check_pressed(vk_up) && keyboard_check_pressed(vk_right))
    10. sprite_index=sprite_up_right;
    11. if (keyboard_check_pressed(vk_up) && keyboard_check_pressed(vk_left))
    12. sprite_index=sprite_up_left;
    13. if (keyboard_check_pressed(vk_down) && keyboard_check_pressed(vk_right))
    14. sprite_index=sprite_down_right;
    15. if (keyboard_check_pressed(vk_down) && keyboard_check_pressed(vk_left))
    16. sprite_index=sprite_down_left;
    Alles anzeigen


    EDIT by WIN: fehler im code entfernt
    Einige meiner Spiele:
  • Original von Baddi
    ich brauche so etwas wie : vk_up and vk_down oder, ihr könnt mir andere Befehle/ Möglichkeiten sagen

    Ähm die sind doch mit && kombiniert "and" und "&&" is das gleiche^^

    Original von BaddiAlso wo man zB. diese Befehle kombiniert.


    Im Step Event...

    €dit: IC war schneller :D

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

  • Fehler: Der Befehl heißt keyboard_check_pressed, da muss man halt mal in der Hilfe unter Game Maker Language(GML)-Benutzerinteraktion-Die Tastatur nachschlagen.
    Einige meiner Spiele:
  • das habe ich ausprobiert, aber der wechselt immer nur in sprite_up, sprite_down, sprite_right, sprite_left.

    Also nie in die 4 "schrägen" Sprites.
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte
  • Original von interceptor
    ich brauche doch auch einen Befehl für die Sprites, die man von schräg hinten sieht und nicht nur von hinten, vorne rechts und links.

    ich weiß nicht was du hast, aber ich denke, dass dir die beiden genau das erklärt haben. Das && bedeutet ja nichts anderes als AND. Und ob du wirklich vk_up AND vk_down brauchst, musst du dir schon genau überlegen...

    So wären doch alle Richtungen abgedeckt:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up))
    2. sprite_index=sprite_up;
    3. if (keyboard_check_pressed(vk_down))
    4. sprite_index=sprite_down;
    5. if (keyboard_check_pressed(vk_right))
    6. sprite_index=sprite_right;
    7. if (keyboard_check_pressed(vk_left))
    8. sprite_index=sprite_left;
    9. if (keyboard_check_pressed(vk_up) && keyboard_check_pressed(vk_right))
    10. sprite_index=sprite_up_right;
    11. if (keyboard_check_pressed(vk_up) && keyboard_check_pressed(vk_left))
    12. sprite_index=sprite_up_left;
    13. if (keyboard_check_pressed(vk_down) && keyboard_check_pressed(vk_right))
    14. sprite_index=sprite_down_right;
    15. if (keyboard_check_pressed(vk_down) && keyboard_check_pressed(vk_left))
    16. sprite_index=sprite_down_left;
    Alles anzeigen


    EDIT by WIN: fehler im code entfernt
  • es ist sehr schwierig, zwei tasten zur exakt gleichen zeit zu drücken...
    vielleicht funktioniert diese version des codes:

    GML-Quellcode

    1. if (keyboard_check_pressed(vk_up))
    2. sprite_index=sprite_up;
    3. if (keyboard_check_pressed(vk_down))
    4. sprite_index=sprite_down;
    5. if (keyboard_check_pressed(vk_right))
    6. sprite_index=sprite_right;
    7. if (keyboard_check_pressed(vk_left))
    8. sprite_index=sprite_left;
    9. if (keyboard_check(vk_up) && keyboard_check(vk_right))
    10. sprite_index=sprite_up_right;
    11. if (keyboard_check(vk_up) && keyboard_check(vk_left))
    12. sprite_index=sprite_up_left;
    13. if (keyboard_check(vk_down) && keyboard_check(vk_right))
    14. sprite_index=sprite_down_right;
    15. if (keyboard_check(vk_down) && keyboard_check(vk_left))
    16. sprite_index=sprite_down_left;
    Alles anzeigen
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • ich frage mich:

    1.
    WAS FÜR EINEN CODE HÄTTE ICH DENN SONST NEHMEN SOLLEN?????

    2.
    Der Quelltext, den ihr mir hier erneut vorgeschlagen habt, habe ich doch schon ausprobiert.


    3.
    Außerdem will ich die Tasten nicht zur exakt gleichen Zeit drücken, sondern so, wie es gerade kommt.
    Nehmen wir an, ich gehe mit meiner figur nach unten (taste: unten).
    Dann drücke ich zusätzlich zur taste down, auch noch die taste right.
    Nun soll die figur in sprite sprite_down_right wechseln
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte

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

  • Original von Baddi
    2.
    Der Quelltext, den ihr mir hier erneut vorgeschlagen habt, habe ich doch schon ausprobiert.

    das bezweifel ich.
    keyboard_check() ist ein aderer befehl als keyboard_check_pressed()

    und bitte nicht so unfreundlich. wir versuchen dir freiwillig und unentgeltlich zu helfen. wenn du dann "rumschreist" könntest du einige helfer vergraulen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Nein. Das mit den zwei Tasten lag daran, weil zuerst keyboard_check_pressed eingegeben wurde. Jetz heißt es aber keyboard_check()
    Diese Version sollte jetz aber klappen!

    €dit: WIN war schneller :D
    €dit2: Da waren wohl 3 Leute zu langsam XD

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

  • WINs Code haste schon ausprobiert?
    Die hat bei der Abfrage von beiden tasten das "_pressed" weggelassen damit man die beiden tasten auch zu unterscheidlichen Zeiten runterdrücken kann und er dann trotzdem schief geht...
    und jetzt frag nicht was WINs Code ist <.<

    EDIT: Nargh schon mein 5ter Post wo ich zu langsam antworte oO

  • 2.
    Der Quelltext, den ihr mir hier erneut vorgeschlagen habt, habe ich doch schon ausprobiert.
    Nein. Wenn du genau hinsiehst: WIN hat das _pressed entfernt, was wahrscheinlich der Fehler an der Geschichte war. Jetzt wird abgefragt, ob die Tasten gedrückt sind, nicht ob sie gerade vom ungedrückten in den gedrückten Zustand gewechselt haben.

    EDIT: WIN, Merko und TrunX waren schneller. :D Von so vielen wurde ich noch nie überholt. Kannst dich freuen, dass sich alle so drum reißen dir zu helfen. ;)
    Einige meiner Spiele:
  • Vielen Dank.
    es hat fast so funktioniert, wie ich es haben wollte.

    Wenn ich zum Beispiel nach oben und nach rechts gleichzeitig drücke, wechselt meine Figur in den Sprite "sprite_up_and_right".
    So weit, so gut...

    Das Problem ist nur: (Beispiel)
    Wenn ich oben und rechts gleichzeitig drücke, und dann rechts wieder loslasse,
    sollte meine Hauptfigur eigentlich wieder sofort in den Sprite "sprite_up" wechseln.
    Das Spiel soll ja von der Steuerung so "flüssig und einfach" wie möglich laufen.

    Stattdessen muss ich erst alle Tasten loslassen und wieder von neuem (z.B.)
    oben drücken, damit der Sprite gewechselt wird.


    Wäre nett, wenn ihr mir nochmals helfen könntet...
    Das wichtigste BACK- UP ist das, wozu man keine Zeit mehr hatte

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

  • versuch es doch mal so:

    GML-Quellcode

    1. if (keyboard_check(vk_up))
    2. sprite_index=sprite_up;
    3. if (keyboard_check(vk_down))
    4. sprite_index=sprite_down;
    5. if (keyboard_check(vk_right))
    6. sprite_index=sprite_right;
    7. if (keyboard_check(vk_left))
    8. sprite_index=sprite_left;
    9. if (keyboard_check(vk_up) && keyboard_check(vk_right))
    10. sprite_index=sprite_up_right;
    11. if (keyboard_check(vk_up) && keyboard_check(vk_left))
    12. sprite_index=sprite_up_left;
    13. if (keyboard_check(vk_down) && keyboard_check(vk_right))
    14. sprite_index=sprite_down_right;
    15. if (keyboard_check(vk_down) && keyboard_check(vk_left))
    16. sprite_index=sprite_down_left;
    Alles anzeigen
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x