Platformer sollen mich verfolgen.

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

  • Platformer sollen mich verfolgen.

    Hallo,

    ich weiß nicht wie ich die frage stellen soll:

    Ich würde es gern so umsetzten das wenn der Spieler etwas tut(laufen, springen) ihn nacharmen.

    Ich weiß das GMS 1.4 eine ähnliche Demo hat trotzdem hängt es bei mir an einer eigenen umsetzungen.

    Hat jemand eine Idee wie?

    (Die Nacharmer sollen im Charackter stehen bleiben)

    (Die Nacharmer sollen eigende Objekte sein)
  • Da gibt es viele verschiedene Möglichkeiten, das umzusetzen. Eine Möglichkeit ist es, die letzten Positionen des "Masters" zu speichern und den "Slave" diese Positionen mit etwas Verzögerung "abarbeiten" zu lassen. Ich hab ein kleines Beispiel erstellt, dass die letzten Positionen in einem Array speichert. In jedem Step rücken die gespeicherten Positionen um einen Platz nach vorne. Mit der Variable history_length kannst du die Dauer der Verzögerung einstellen.

    Vielleicht bringt dich das ja auf den richtigen Weg. :)
    Dateien
    • Nachahmer.zip

      (15,27 kB, 257 mal heruntergeladen, zuletzt: )
    kostenlose Android-Spiele:
    hexavirScribble Triple

    Mr. Peperonico auf Facebook
  • Du könntest auch mit Pfaden arbeiten. Mit den point_add Funktionen einfach im Step die Spielerkoordinaten hinzufügen wenn x != xprevious und y != yprevious ( das sorgt dafür das nur beim Bewegen neue Koordinaten hinzugefügt werden)
    Die Pfade sind etwas flexibler als das Array da man für jeden Punkt auch eine Geschwindigkeit setzen kann.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • TestDeveloper schrieb:

    [...]Könntest du das bitte rein kopieren? [...]

    Jupp, kann ich machen. Das Projekt besteht aus zwei Objekten, obj_master und obj_slave. obj_slave braucht keinen Code. obj_master hat den folgenden Code:

    GML-Quellcode

    1. /***** CREATE EVENT *****/
    2. // Anzahl der gespeicherten Positionen
    3. history_length = 100;
    4. // Alle Positionenswerte initialisieren
    5. for (i = 0; i < history_length; i += 1)
    6. {
    7. history_x[i] = x;
    8. history_y[i] = y;
    9. }
    10. /***** STEP EVENT *****/
    11. // obj_master der Maus folgen lassen
    12. x = mouse_x;
    13. y = mouse_y;
    14. // History neu berechnen
    15. for (i = history_length; i > 1; i -= 1)
    16. {
    17. history_x[i - 1] = history_x[i - 2];
    18. history_y[i - 1] = history_y[i - 2];
    19. }
    20. // Aktuelle Position an History anhängen
    21. history_x[0] = x;
    22. history_y[0] = y;
    23. // Slave auf letzt-bekannte Position setzen
    24. with (obj_slave)
    25. {
    26. x = other.history_x[other.history_length - 1];
    27. y = other.history_y[other.history_length - 1];
    28. }
    Alles anzeigen


    Die Lösung von Rhazul funktioniert natürlich auch. Wenn du allerdings beispielsweise auch möchtest, dass der "Slave" andere Dinge nachahmt, wie beispielsweise den Sprite für Spring- und Laufanimationen, dann wird es schwieriger, dies mit Paths umzusetzen. Mithilfe von Arrays kannst du auch das relativ leicht umsetzen. Allerdings weiß ich nicht, wie performant meine Lösung ist, wenn man wirklich mehrere Werte in den Arrays für längere Zeit speichern will..
    kostenlose Android-Spiele:
    hexavirScribble Triple

    Mr. Peperonico auf Facebook

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

  • Ich habe es jetzt nicht getestet, aber sollte beispielsweise so funktionieren:

    GML-Quellcode

    1. /***** CREATE EVENT *****/
    2. // Verzögerung der Slaves
    3. slave1_pos = 30;
    4. slave2_pos = 60;
    5. slave3_pos = 90;
    6. // Anzahl der gespeicherten Positionen
    7. history_length = 90;
    8. // Alle Positionenswerte initialisieren
    9. for (i = 0; i < history_length; i += 1)
    10. {
    11. history_x[i] = x;
    12. history_y[i] = y;
    13. }
    14. /***** STEP EVENT *****/
    15. // obj_master der Maus folgen lassen
    16. x = mouse_x;
    17. y = mouse_y;
    18. // History neu berechnen
    19. for (i = history_length; i > 1; i -= 1)
    20. {
    21. history_x[i - 1] = history_x[i - 2];
    22. history_y[i - 1] = history_y[i - 2];
    23. }
    24. // Aktuelle Position an History anhängen
    25. history_x[0] = x;
    26. history_y[0] = y;
    27. // Slave1 um 30 Steps verzögern
    28. with (obj_slave1)
    29. {
    30. x = other.history_x[other.slave1_pos];
    31. y = other.history_y[other.slave1_pos];
    32. }
    33. // Slave2 um 60 Steps verzögern
    34. with (obj_slave2)
    35. {
    36. x = other.history_x[other.slave2_pos];
    37. y = other.history_y[other.slave2_pos];
    38. }
    39. // Slave3 um 90 Steps verzögern
    40. with (obj_slave3)
    41. {
    42. x = other.history_x[other.slave3_pos];
    43. y = other.history_y[other.slave3_pos];
    44. }
    Alles anzeigen
    kostenlose Android-Spiele:
    hexavirScribble Triple

    Mr. Peperonico auf Facebook