Charakter- Sprite Problem Edit: Bitte Post nochmal gucken [11.4]

  • GM 7

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

  • Charakter- Sprite Problem Edit: Bitte Post nochmal gucken [11.4]

    Hallo, ich habe ein Problem, Ich hab nen Charakter der für Links/Rechts Gehen einen Sprite (Animation) hat, und auch wenn ich nichts drücke(also z.B. ich bin paar schritte nach links, dann bleibt der mit einem anderren Sprite). Aber wie soll ich das Hinkriegen?, im moment ist es so das ich Wenn ich nach links gehe die Animation Stehen bleibt, und erst losgeht wenn ich den Knopf loslasse. Wie krieg ich das besser hin?. Wäre nett wenn mir jemand hilft, am besten noch über Icq/Msn oder mit nem Example

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

  • Wenn du z.B. Pfeil nach link drückst, wechselt der sprite in z.B. player_links, pfeil nach rechts = player_rechts sprite.
    Wenn du die taste loslässt ändert er sich in z.B. player_stehen.
    Passend dann noch den image_speed einstellen, falls eine animation vorhanden ist.
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • gamer schrieb:

    Wenn du z.B. Pfeil nach link drückst, wechselt der sprite in z.B. player_links, pfeil nach rechts = player_rechts sprite.
    Wenn du die taste loslässt ändert er sich in z.B. player_stehen.
    Passend dann noch den image_speed einstellen, falls eine animation vorhanden ist.
    Soweit bin ich ja, aber es ist so das die Animation nur geht wenn ich nach dem ich Links gegangen bin und Stoppe. Aber es soll so sein z.B. Ich stehe=Normale Stand Animation, danch gehe ich nach links=Die animation, ich bleibe stehen=der sprite der nach rechts guckt. Aber ich krieg das nicht hin
  • Hallo Pecoxx

    Du müsstest fast deinen Code, oder noch besser, deine GM-Datei, hochladen, damit wir dir helfen können, da dieses Problem verschiedene Ursachen haben kann.

    Ich rate jetzt mal, du hast die Tastenbelegung mit dem Key-Event gemacht (also weder Key-Pressed- noch Key-Released-Event). Wenn du in diesem Event den Sprite wechselst, dann wird der Sprite in jedem Step gewechselt, was dazu führt, dass immer das erste Bild deiner Gehanimation gezeigt wird, was dann wiederum aussieht, als ob gar keine Animation laufen würde. Lässt du diese Taste nun los, spielt sich die Animation ganz normal ab.

    Mein Lösungsvorschlag:
    Benutze statt den Key-Event den Key-Pressed und den Key-Reselased Event.
    Eine andere Möglichkeit ist, im Key-Event zuerst eine Abfrage zu machen, ob der Sprite bereits auf die Animation gewechselt hat. Und nur wenn nicht den Sprite ändern.

    Das würde dann beispielsweise so aussehen:

    GML-Quellcode

    1. if !(sprite_index = spr_animation_rechts)
    2. {
    3. sprite_index = spr_animation_rechts;
    4. }



    MfG flogy
  • flogy schrieb:

    Hallo Pecoxx

    Du müsstest fast deinen Code, oder noch besser, deine GM-Datei, hochladen, damit wir dir helfen können, da dieses Problem verschiedene Ursachen haben kann.

    Ich rate jetzt mal, du hast die Tastenbelegung mit dem Key-Event gemacht (also weder Key-Pressed- noch Key-Released-Event). Wenn du in diesem Event den Sprite wechselst, dann wird der Sprite in jedem Step gewechselt, was dazu führt, dass immer das erste Bild deiner Gehanimation gezeigt wird, was dann wiederum aussieht, als ob gar keine Animation laufen würde. Lässt du diese Taste nun los, spielt sich die Animation ganz normal ab.

    Mein Lösungsvorschlag:
    Benutze statt den Key-Event den Key-Pressed und den Key-Reselased Event.
    Eine andere Möglichkeit ist, im Key-Event zuerst eine Abfrage zu machen, ob der Sprite bereits auf die Animation gewechselt hat. Und nur wenn nicht den Sprite ändern.

    Das würde dann beispielsweise so aussehen:

    GML-Quellcode

    1. if !(sprite_index = spr_animation_rechts)
    2. {
    3. sprite_index = spr_animation_rechts;
    4. }



    MfG flogy
    Danke, hat alles geklappt, jetzt will ich aber wenn ich nach Rechts Springe, den Sprite (beispiel) JumpR benutzen, aber wenn er aufkommt soll er wieder normal den Sprite nach rechts haben. Wie mach ich das? Ich würd das eigentlich ungern hochladen, vll hilft mir eine Person der ichs schicken könnte.
  • Wie du wahrscheinlich weisst, basiert der Spielaufbau des GameMaker's auf sog. Steps. Die Anzahl Steps (Schritte) pro Sekunde kannst du im Room-Menü des betreffenden Raumes einstellen. Der Standartwert ist 30 Steps / Sekunde.
    Wie oben schon gesagt, siehst du, wenn du eine Animation in jedem Step startest, nur das erste Bild der Animation. Du musst es also so machen, dass du eine Animation nur in einem Step startest.

    Wenn du jetzt also machen willst, dass die Spielfigur beim Sprung eine Sprunganimation hat, so kannst du dies beispielsweise mit folgendem Code im Step-Event lösen:

    GML-Quellcode

    1. if (place_free(x,y+sprite_height+1) && !sprite_index = spr_sprung)
    2. {
    3. sprite_index = spr_sprung;
    4. }


    Zur Erklärung:
    Wenn du im Step-Event eine Animation starten willst, musst du aufpassen, dass diese wirklich nur einmal, und nicht in jedem Step gestartet wird. Ich mache das immer mit if-Abfragen, wo ich abfrage, ob ein gewisser Zustand schon vorhanden ist und wenn nicht, aktiviere ich diesen Zustand.

    Hier der Code in die deutsche Sprache umformuliert, damit du verstehst, was ich im obigen Text gemeint habe:

    Wenn der Pixel direkt unter diesem Objekt frei ist und der Sprite nicht spr_sprung ist,
    dann soll der Sprite dieses Objekts spr_sprung sein.


    Ich hoffe, ich konnte helfen, auch zukünftige Probleme bezüglich Animationen und Steps zu lösen ;)


    MfG flogy
  • flogy schrieb:

    Wie du wahrscheinlich weisst, basiert der Spielaufbau des GameMaker's auf sog. Steps. Die Anzahl Steps (Schritte) pro Sekunde kannst du im Room-Menü des betreffenden Raumes einstellen. Der Standartwert ist 30 Steps / Sekunde.
    Wie oben schon gesagt, siehst du, wenn du eine Animation in jedem Step startest, nur das erste Bild der Animation. Du musst es also so machen, dass du eine Animation nur in einem Step startest.

    Wenn du jetzt also machen willst, dass die Spielfigur beim Sprung eine Sprunganimation hat, so kannst du dies beispielsweise mit folgendem Code im Step-Event lösen:

    GML-Quellcode

    1. if (place_free(x,y+sprite_height+1) && !sprite_index = spr_sprung)
    2. {
    3. sprite_index = spr_sprung;
    4. }


    Zur Erklärung:
    Wenn du im Step-Event eine Animation starten willst, musst du aufpassen, dass diese wirklich nur einmal, und nicht in jedem Step gestartet wird. Ich mache das immer mit if-Abfragen, wo ich abfrage, ob ein gewisser Zustand schon vorhanden ist und wenn nicht, aktiviere ich diesen Zustand.

    Hier der Code in die deutsche Sprache umformuliert, damit du verstehst, was ich im obigen Text gemeint habe:

    Wenn der Pixel direkt unter diesem Objekt frei ist und der Sprite nicht spr_sprung ist,
    dann soll der Sprite dieses Objekts spr_sprung sein.


    Ich hoffe, ich konnte helfen, auch zukünftige Probleme bezüglich Animationen und Steps zu lösen ;)


    MfG flogy
    Klar geholfen hast du wieder, aber leider ist das Problem etwas anders, undzwar ist es so das mein Sprite wenn er Links+Up drückt den Sprite spr_JumpLeft benutzen soll und anders herum, nun weis ich nicht genau wie ich das machen soll. Also so einen Code Formulieren kann ich noicht weil ich nicht weis wie die gganzen dinger heißen, vll hast du ja ne liste oder sowas damit ich mir den basteln kann, oder du hilfst mir wieder^^
  • flogy schrieb:



    Pecoxx schrieb:

    vll hast du ja ne liste oder sowas damit ich mir den basteln kann
    Ja, so eine hab ich. Und zwar kannst du diese auf dieser Seite finden: Die ultimative, supergeniale, deutsche GameMaker Hilfe


    MfG flogy
    :headtouch: :headtouch: ich trottel, danke ich werds mal allein versuchen^^

    Edit: Hab geguckt aber nicht gefunden wie ich das machen soll. Außerdem hab ich noch andere Probleme gefunden, wenn ich shcnell nach links laufe und dann schnell nach rechts ändert der Spirte sich nicht, was muss ich einstellen? Und wenn jemand nen Code für LEbensanzeigen hat wäre auch nett.

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