Spezielle Fortbewegung eines Objekts (script)

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

  • Spezielle Fortbewegung eines Objekts (script)

    Hallo liebe Forum-Benützer

    Ich habe ein Objekt das sich zunächst in eine unbestimmte Richtung bewegt und nach einer unbestimmten Zeit die Richtung seiner Fortbewegung wechselt.
    Dieser Wechselgang findet allerdings sehr zackig statt. Damit will ich sagen das sich das Objekt bei seiner Vorwärtsbewegung nicht zuerst in die nächste
    Gangrichtung dreht sondern gleich in diese Gangrichtung versetzt wird.
    Einfacher erklärt:
    Wenn ich laufe und im nächsten Moment die Richtung wechseln muss drehe ich meinen Körper zuerst in die folgende Richtung.
    Dieses Objekt wird allerdings gleich in die folgende Richtung gezeichnet.

    Kann mir jemand helfen einen geeigneten Script für diese Art der Fortbewegung zu verwenden?

    Grossen Dank im Voraus und eine schöne Woche! :thumbup:
    -Bogatyr
  • Hi,
    versteh ich dich richtig? Du willst also nicht, dass das Objekt seine Richtung sofort ändert, sondern sich langsam in die neue Richtung dreht?

    das könntest du z.B. so lösen:

    GML-Quellcode

    1. //step event
    2. unterschiedDirection = neueDirection - aktuelleDirection
    3. if unterschiedDirection > 0 {aktuelleDirection += directionÄnderung}
    4. if unterschiedDirection < 0 {aktuelleDirection -= directionÄnderung}

    allerdings könnte es probleme bei dem übergang von 359° auf 0° geben..

    mfg
    HIM
  • Hi,
    Im Idealfall sollte sich das Objekt langsam in die neue Richtung drehen UND bereits in die neue Richtung gehen.
    Wenn du läufst bleibst du nicht stehen um zuerst in die neue Richtung auszudrehen, in die du dann gehen wirst. Obwohl.. Coole Idee..
  • Probier mal folgendes Script:

    GML-Quellcode

    1. angle_turnto(dir,sp,now)
    2. // argument0 = Winkel zu dem gedreht werden soll.
    3. // argument1 = Rotationsgröße.
    4. // argument2 = Aktueller Winkel.
    5. var d,o;
    6. d=argument2-argument0;
    7. if (d > 180)
    8. {
    9. d -= 360;
    10. }
    11. else if (d < -180)
    12. {
    13. d += 360;
    14. }
    15. if (d > argument1)
    16. {
    17. o=argument2-argument1;
    18. return o;
    19. }
    20. else if (d < -argument1)
    21. {
    22. o=argument2+argument1;
    23. return o;
    24. }
    25. else
    26. {
    27. o=argument0;
    28. return o;
    29. }
    Alles anzeigen


    Das führst du dann im Step-Event auf, zb so:

    GML-Quellcode

    1. direction=angle_turnto(newangle,5,direction)

    © 2008 by Teamgrill Productions