path verlängern während der path gerade abgefahren wird

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

  • path verlängern während der path gerade abgefahren wird

    Hallo Leute, ich habe folgendes Problem:

    mein Object fährt einem path nach, während der Fahrt, verändert sich aber die Länge des paths da am Ende immer wieder was dazukommt. Wenn das passiert wenn das Object gerade auf path_position 0,3 zB ist und er wird verlängert dann bleibt das obj natürlich auf position 0,3, "flitzt" also den Pfad entlang bis er wieder eine stabile Länge hat und geht dann erst wieder gemütlch. Ich will aber automatisch während sich der path verlängert eine Rückrechnung haben damit das Verhältnis aus zurückgelegtem Weg und zukünftigem Weg nicht gleich ist sondern sich je nach dazugekommener Wegstrecke verändert. Genau diese dazukommende Wegstrecke kann ich nicht bereche.

    Bis jetzt hatte ich drei Lösungsansätze:
    Spoiler anzeigen
    1) Ich führe nach der path änderung path_start() nochmal aus, das ist zwar sauber aber der path verschiebt sich unvorhergesehen weil das object in der zwischenzeit gerade aus rennt und dann von der neuen position den pfad startet. Also immer ungenauer je öfter der path geändert wird.

    2) ich merke mir dir pfadlänge, verlängere den path und dann rechne ich mit der neuen und alten Länge einen Wert zwischen 0 und 1 raus und dort wird das Object hinverschoben.

    GML-Quellcode

    1. var len = path_get_length(pt);
    2. path_add_point(pt,mouse_x,mouse_y,100);
    3. mouse_xprev = mouse_x;
    4. mouse_yprev = mouse_y;
    5. //path_start(pt,2,0,0);
    6. path_position = 1/(path_get_length(pt)-len);

    dabei springt mein object aber auch immer nur zum Anfangspunkt des paths, es kommt immer 0 raus oder eine zu kleine Zahl als sie wirklich sein müsste damit das Verhältis stimmt. Es stimmt wohl was nicht mit meiner "Formel"..?

    3) und der vielversprechenste; Prozentrechnung!
    wenn sich der path um 16% verlängert, dann muss sich der Prozentsatz des zurückgelegten Wegs (zB 30%) um genausopviel Prozent verringern (16% von 30%)

    GML-Quellcode

    1. path_position -= ((path_position*100)-prozentverlängerung)/100;

    das klappt aber leider nicht weil er dann immer zu 0,1 bzw 0,2 springt, auch wenn er schon 50% zurückgelegt hat.



    EDIT: Fehler gefunden. So geht es nun, das obj bewegt sich weiter im Originaltempo und der path kann beliebig verlängert werden:

    GML-Quellcode

    1. var len = path_get_length(pt);
    2. path_add_point(pt,mouse_x,mouse_y,100);
    3. mouse_xprev = mouse_x;
    4. mouse_yprev = mouse_y;
    5. var pluspro = (path_get_length(pt)-len)/(path_get_length(pt)/100);//differenz in %
    6. path_position -= path_position*(pluspro/100);


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

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