step avoiding, image "ruckelt" beim umfahren

  • GM 8

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

  • step avoiding, image "ruckelt" beim umfahren

    So, ich habe leider wieder ein Problem.

    Ich habe ein Computer, der auf den Spieler zuläuft. Und sich das Image der Richtung anpasst. Nur ist jetzt das Problem, dass wenn der Computer um ein Object fährt, dass das Image(Sprite) immer so ruckelt, sprich durch die Wand wil. Es ist schwer zu erklären! xD Also das Image dreht sich zwar schon immer in die Fahrtrichtung, aber wenn er um die Wand fährt, dreht sich das Image immer leicht gegen die Wand und dann im gleichen Moment wieder in Fahrtrichtung. Es springt sozusagen immer hin und der und das sieht nicht schön aus.

    Der Code lautet:
    :event_step:

    GML-Quellcode

    1. image_index = image_number * direction / 360 // Ich habe 360 Bilder und es dreht sich in die Fahrtrichtung
    2. if distance_to_object(o_player1) >=300 // Er hält dann nach einer Distanz von 300 Pixel an, ist aber glaube ich nicht wichtig und befindet sich im anderen Code
    3. {
    4. action_potential_step(o_player1.x,o_player1.y,2,0); // So, hier fährt er in Richtung spieler und umfährt andere Objecte
    5. max = 4 // Hat etwas mit der Geschwindigkeit zu tun, nicht wichtig.
    6. }
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.

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

  • Könnte mit der kollisionsmaske zusammenhängen. Wenn sie nicht grad einen kreis bildet, ändert sie sich so bei jeder Drehung und könnte dann im umgehenden Object stecken.
    Weis nicht genau wie der potential_step im enzelnen Aufgebaut ist, aber es könnte sein, das da was drin ist, was die "ruckler" verursacht.
  • Probier mal dich mit den

    GML-Quellcode

    1. mp_potential_settings(90,90,3,1)

    zu spielen. Das könnte einiges helfen :)

    Hast du ansonsten irgendetwas im Kollisionsevent oder step Event das sich mit den Direction Werten spielt?

    Oh und wenn du die 360 Bilder nicht selbst gepixelt hast, dann kannst du gleich ein einziges verwenden, das mit image_angle gedreht wird. Das wird genauso scharf/unscharf wie wenn dus vorher im Sprite drehen und zeichnen lässt.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • @Roy

    Habe mehrere Funktionen gesteste, aber entweder besteht weiterhin der Fehler oder er fährt nur große Bogen.
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.

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

  • Könnte es sein das bei den einzelnen Subimages der Origin(Nullpunkt) leicht verschoben ist?
    Kannst ja zum Test ein identisches Object erstellen, dieses aber einen einzelnen Sprite(am besten Kreis) zuweisen, und statt image_index = ... zum Test das hier eintragen:


    GML-Quellcode

    1. image_angle = direction


    Wenn der Nullpunkt genau in der Mitte des Sprites ist und sonst nichts falsches im Object ist, sollte sich das Object richtig und ohne ruckler bewegen!
  • Ich merk grad das ich selber grad auf dem falschen Pfad war. Also das Problem ist nicht die Drehung und Kollision selbst, sondern dass wenn der gegner um eine lange Mauer herum muss hinter der der Spieler ist. stellt er sich quasi am Anfang des Steps bzw Codes in Richtung Spieler zeigend, berechnet das da was im Weg ist, dreht sich in Richtung Weg drumrum, geht einen Schritt nach vorne und dann macht er alles wieder von Vorne.
    Deswegen ruckelt er immer so rum, oder?

    Ich seh mal nach was ich bei meinen Projekten so habe um das Problem lösen zu können.

    EDIT:
    Also ich habe grad schnell so ein Projekt erstellt und bei mir kam es auch zu diesem ruckeln und ich konnte es mit mp_settings auch nur verschlimmbessern. Bei meinen anderen Projekten habe ich allerdings nie Objekte gehabt deren Sprite sich in 360 grad schritten dreht, sondern nur in 4 - 8 Richtungen. Dann zuckelt direction, aber man sieht es nicht da sich erst ab einem bestimmen schwellenwert von direction das Sprite ändert. Vielleicht hilft dir diese Info ja.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)

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

  • Ich hab komplett keine Ahnung, ob das irgendwie hilfreich ist, aber du könntest einen Abstand des Computers zur Wand einrichten, oder? So wie ich das verstanden habe, könnte es so aufhören zu ruckeln, weil er nicht an der Wand ist.
    Sry wenn das alles nur Müll ist ;)
    GML lernen geht leicht :)
    1. http://www.gm-d.de/help/ (deutsch)
    2. gm-d.de/wbb/index.php/Thread/2270/ (Einsteiger-Referenz)
    3. docs.yoyogames.com/ (Hilfe auf Englisch von GM:S)
  • famous schrieb:

    Ich erinnere mich dunkel das auch mal beobachtet zu haben. Du nimmst sicher die "direction" Variable, die passt der GameMaker permanent an, da er ständig erneut diese Richtung anpeilt flippt "direction" um jeweils 180°.

    Das kannst du auf beliebige Art umgehen. Empfehlen würde ich dich nicht nach "direction" zu richten, sondern eine separate Variable zu nehmen. Je nachdem was du erreichen möchtest (solltest du uns schon verraten) kannst du diese elegant danach ausrichten.

    Solange du "direction" mit "image_angle" synchron hältst wird dein Sprite immer flippen, erst eine andere Variable über welche du die Kontrolle hast, kann bspw. einfrieren sobald du in der nähe einer Wand bist.



    Okay, hatte das Problem erneut uns mit diese Methode klappt es recht gut.

    Ich habe eine Variable "richtung" = direction die alle 10 Steps, also 6 mal in der Sekunde aktuallisiert wird.
    Husi012 hat mich nicht mehr in seiner Signatur, ich bin trotzdem noch fame.