Lift Platformen

  • Hallo Community,


    Ich habe mich ein wenig mit c++ auseinander gesetzt und habe im Side Scroller Template ein wenig rumgespielt. Zum Aufwärmen habe ich Liftplatformen programmiert, sich von einem Startpunkt bis zum Zielpunkt bewegen. Grundsätzlich funktionieren die Platformen schon.

    Das einzige Problem aktuell ist, legen die Platformen eine größere Distanz zurück, bewegen sich diese schneller als die Platformen eine kürzere Distanz zurück legen. Das könnte evtl an der Timeline liegen die die Platformen nutzen, sicher bin ich aber nicht?!


    Weiß jemand Rat?


    Grüße


    Ps: Im Anhang habe die Header und cpp im Archiv angefügt um lange Quellcode ausschnitte zu vermeiden.

  • Tipp: Die Codeausschnitte einfach in einem Spoilertag verstecken =)


    Ja, wenn deine Timeline eine feste Länge X hat und alle Plattformen eine Distanz Y in dieser Zeit X zurücklegen müssen, dann werden welche mit einem großen Y sich schneller bewegen (müssen). Wenn, dann müsste man die Zeit X abhängig von der Distanz Y machen.


    Randnotiz: Generell bin ich kein Fan von Timelines. Wenn du schon Tick verwenden kannst, wäre es in meinen Augen einfacher eine Variable für die Geschwindigkeit festzulegen und dann * DeltaTime die zurückgelegte Distanz berechnen. (Dann haben theoretisch alle Plattformen dieselbe Geschwindigkeit, aber für spezielle Teile könnte man diese leichter ändern).

  • Tipp: Die Codeausschnitte einfach in einem Spoilertag verstecken =)


    Ja, wenn deine Timeline eine feste Länge X hat und alle Plattformen eine Distanz Y in dieser Zeit X zurücklegen müssen, dann werden welche mit einem großen Y sich schneller bewegen (müssen). Wenn, dann müsste man die Zeit X abhängig von der Distanz Y machen.

    Ja das beschreibt mein Problem ziemlich genau...


    Ich hab das Problem lösen können indem ich die Playrate der Timeline entsprechend anpasse:

    Code
    float playRate = EndLocationModifier / 100;
    if (playRate < 0)
    {
        playRate *= -1;
    }
    playRate = 1 / playRate;

    Randnotiz: Generell bin ich kein Fan von Timelines. Wenn du schon Tick verwenden kannst, wäre es in meinen Augen einfacher eine Variable für die Geschwindigkeit festzulegen und dann * DeltaTime die zurückgelegte Distanz berechnen. (Dann haben theoretisch alle Plattformen dieselbe Geschwindigkeit, aber für spezielle Teile könnte man diese leichter ändern).

    Wenn die Platform ab Spielstart sich mit jeden Frame bewegen soll, ja könnte man Tick verwenden. Meine Platformen, müssen sich aber nicht unbedingt ab Spielstart bewegen, sondern können z.B. auch darauf warten bis ein Spieler die Platform betritt und dann anfangen.

    Meine nächste Erweiterung läuft darauf hinaus, das ich Schalter implementiere mit denen die Platformen aktiviert werden können. Ich glaube nicht das Tick in meinen Fall wirklich Sinn macht.