Platformer abfrage ob obj_player sich bewegt

  • GM 7

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

  • Platformer abfrage ob obj_player sich bewegt

    Hi ihr ^^
    Also : Ich möchte nur kurz wissen was der Befehl ist um abzufragen ob sich das Spieler Object bewegt, um dann das Spirit auf eine Stehanimation zu setzen :D

    mfg nylos
  • Da du ja höchstwahrscheinlich mit Jump to a given Position arbeitest, zieh' einfach folgende Icons ins Step Event von deinem Spieler-Objekt:

    If an expression is true
    [Expression: x == x_previous][Not: nicht anhaken]
    Start of a block
    - Change sprite
    -[Sprite: steh_animation][Subimage: -1][Speed: dein_speed]
    End of a block

    MfG,
    -fabse64
    fabse64 -> haiyyu
  • GML-Quellcode

    1. if(obj_player.speed!=0)
    2. {sprite_index=spr_player_stand;}


    EDIT: Wenn die Variable "speed" 0 ist, kann er sich nicht bewegen. Das heisst, dass der Sprite auf "Stillstehend" gewechselt werden.
    EDIT2: Hier nochmal im Drag and Drop (diese komischen Icons):

    If an expression is true
    [Expression: speed == 0]
    Start of block
    Change sprite
    [Sprite: spr_player_stand][Subimage: -1][Speed:1]
    End of block

    Erklärung:

    "If an expression is true" fragt deinen Computer ob etwas stimmt.
    Wenn also gefragt wird ob speed (Geschwindigkeit) == (gleich) 0 ist und das stimmt, dann heisst es, dein Charakter bewegt sich nicht.

    "Start/End of block" fängt bzw. beendet einen Befehlsblock.
    Stell es dir vor, wie eine Kiste. Nachdem gefragt wurde ob speed==0 ist, macht er immer nur das, was als nächstes kommt.
    Um jetzt mehrere sachen hintereinander zu machen, müsste man komplizierter weise ganz oft fragen ob speed==0 ist.
    Das wird mit dem Block ein wenig leichter gemacht.
    Du steckst alles, was du machen willst in den Block rein, und er denkt es ist alles ein Befehl. Kein 100mal "If an expression is true".

    "Change sprite" wechselt deine Spieler-Animation zu dem Sprite, den du haben willst.
    Das erste Feldchen, wo "sprite:" steht, ist für den Namen. Da kommt der Name rein, den du für deine Standanimation gewählt hast.
    Subimage bedeutet, welche Nummer innerhalb des Sprites das Bildchen haben soll. Es fängt immer bei 0 an und wenn du nur 1 Bildchen gemalt hast, kannst du das auf 0 setzen.
    -1 ist hier etwas besonderes. Das kann man in viele Felder im GM eintragen und bedeutet, dass es so bleiben soll, wie es grad ist. Sprich er benutzt das Subimage was vorher in der Animation war.
    [Merke: Wenn das Subimage weiter is als das letzte vorhandene Subimage, dann fängt er von vorne an zu zählen.]
    Speed ist für das "Image Speed". Es sagt aus, wie viele Bilder deine Animation pro Step weiter gehen soll.
    Wenn du Image Speed auf 1 setzt, dann heisst es, dass du jeden Step ein bildchen weiter gehst.
    Ein Step ist ein kurzer Zeitraum, den man ermittelt indem man 1 Sekunde durch den Room Speed teilt.

    Wenn du also room speed auf 30 hast, dann würde bei image speed 1 dein bild pro Sekunde um 30 weiter gehen.

    Der Imagespeed kann auch kleiner als 1 und sogar kleiner als 0 sein.
    Kleiner als 1 heisst, er macht alle 1/image speed Steps ein Bild weiter.
    Kleiner als 0 heisst, dass er rückwärts geht.

    Diese variable is eigentlich egal, wenn du keine wirklichen Animationen hast. Wenn das Sprite allerdings mehrere Subimages hat, dann musst du schauen, welchen wert du da rein tun willst.

    PS: Ich hoffe, es ist damit ausreichend erklärt, falls nich, sag zur not via PN bescheid.

    PPS: Is es so besser Irrenhaus?

    PPPS: Ich hab das Format mal von fabse geklaut.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von Schattenphoenix ()

  • -.-
    Es gibt da durch aus Tutorials und die Hilfe.
    Aber wenn du schon einen Thread aufmachst erkläre ich es dir:

    Du brauchst nicht abzufragen ob der Spieler läuft.
    Du machst das einfach so:

    Im create Event:
    Set Variable move to

    im left button:
    Jump to (dein Jumpto Befehl)
    if move is equal to 0: change sprite into sprite_laufen
    setvariable move to 1

    im left release event:
    change sprite into dein sprite_stehen
    set variable move to 0

    Und das gleiche auch für rechts ;)

    mfg frischi

    EDIT: Argh JOhannski, du bist blitzschnell ^^
    EDIT 2: Ach fabse und Schattenphoenix auch? Ist das hier ne verschwörung 8o



  • ich hab das jetzt mal ins Stepevent gepackt dann kommt:

    ERROR in
    action number 17
    of Step Event
    for object obj_character:

    Error in expression:x == x_previous
    position 6: Unknown variable x_previous
  • Das soll eine Abfrage werden:

    GML-Quellcode

    1. if (x == xprevios) {
    2. //Wenn er stehen bleibt
    3. } else {
    4. //Wenn er in Bewegung ist
    5. }


    EDIT: Tut mir Leid, Kontext nicht ganz gelesen:

    Mehr Informationen bitte! Was hast du genau gemacht, kommt ein Error? Schau dir mal bitte diese Informationen an.
  • Sieht mal wieder nach dem klassischen Dosenfleischsyndrom aus. Mal sehen, was wir bis jetzt haben...

    1. unzureichende Fragestellung
    2. nicht erklärte und anscheinend auch nicht funktionierende Lösung von fabse
    3. reingespammter Code ohne irgendwelche Kommentare von Schattenphoenix
    4. eine Example gewordene Themaverfehlung von JOhannski (remember: gefragt war, wie beim Stillstand das Sprite geändert wird - das Example benutzt nur ein einziges Sprite)
    5. umständliche und schwer verständliche Lösung von frischideu (wozu braucht man dazu eine extra-Variable, wenn es zigtausend vorgegebene gibt?)
    6. logischerweise weitere Probleme aufgrund der gegebenen Lösungsvorschläge
    7. ein bisschen Mod-Spam von ghostrider ( :P )

    Prima Jungs, ein voller Erfolg. -.-
    Bitte bemüht euch ab jetzt mal ein wenig mehr um kompetentere Lösungsansätze und darum, sie auch für einen Drag&Drop-Einsteiger verständlich zu erklären (ich will hier bestimmt auf niemanden zielen, die Betreffenden werden sich wohl eh von selbst angesprochen fühlen) - es hilft wirklich niemandem weiter, wenn ihr innerhalb von drei Minuten zwanzig Codes in den Raum werft, von denen kein einziger getestet oder kommentiert ist. Was habt ihr denn davon? 'nen höheren Postingzähler, das Vorrecht, behaupten zu können "Jaa! Ich bin erst0r!!1 Und es kann mir keiner mehr nehmen!!!11" und hinterher dann viel Gemotze und Spam, weil eure Lösungen entweder unverständlich, umständlich (wodurch weitere Fragen anfallen -> Thread zieht sich über zehn Seiten etc.) oder falsch sind.

    So, genug rumgerüffelt, jetzt mal @ nylos:
    Wie ghostrider schon sagte, es würde uns helfen, wenn wir wüssten, wie dein aktueller Code bzw. deine aktuellen Drag&Drop-Befehle aussieht/aussehen. Grundsätzlich würde ich dir aber empfehlen, im Step-Event mittels dieses Symboles die Variable "speed" deines Objektes zu überprüfen und via das Sprite entsprechend zu wechseln. Wenn du zusätzlich noch die Variable "direction" abfragst, kannst du auch Sprites für verschiedene Laufrichtungen verwenden. Vielleicht solltest du auch mal die Suchfunktion auf gm-d benutzen und dich ein wenig durch die Technikforen stöbern, möglicherweise findest du ja ein paar Threads, in denen dein Problem schon behandelt wurde (es ist btw keine üble Idee, genau das zu tun, bevor du einen neuen Thread öffnest ;) ). Und merke dir auch die goldene Technikfragenregel #1:
    was müssen wir wissen, um dir zu helfen?
    Das wär soweit mal mein Senf dazu.
  • Ich hab oben nochmal ein bisschen Detail nachgetragen. Liess meinen ersten Post nochmal.


    Ich hoffe Irrenhaus ist befriedigt :thumbup:

    Falls dir das nicht weiterhilft, empfehle ich dir desweiteren mal in den Forenabschnitt "Tutorial Archiv" zu gehen und den Thread "Simple Platform Engine" zu suchen.
    Da ist eine Platform Engine von copyboy, welche eigentlich beispielhaft funktioniert.

    Er benutzt auch verschiedene Animationen, also falls du garnich weiter kommst, kannst du da mal schauen.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet