Geschwindigkeit eines Fahrzeugs bei Spline kontrollieren

  • Hi!

    Ich habe es geschafft, dass mein Fahrzeug dem Pfad eines Splines hinterherfährt. Nun möchte ich die Geschwindigkeit entsprechend anpassen, weil es im Moment an manchen Stellen aus der Kurve fliegt. Aber mir fehlt bisher der Ansatz hierfür. Hat jemand einen guten Tipp für mich?


    Gruß, Christoph

    • Offizieller Beitrag

    Rein aus der Logik:


    1.In der Realität würdest du immer bremsen wenn du auf eine Kurve zufährst.

    Im Spiel bräuchtest du also eine Triggerbox die die Geschwindigkeit runtersetzt sobald dein Fahrzeug in die Triggerbox hinein fährt.

    2.Überhaupt könntest du die Geschwindigkeit in eine Variable schreiben und ändern. Du könntest die Geschwindigkeit auch mit einem Random Float in Range steuern dadurch wäre die Geschwindigkeits Veränderung immer unterschiedlich.

    https://docs.unrealengine.com/…omFloatinRange/index.html

  • Im Spiel bräuchtest du also eine Triggerbox die die Geschwindigkeit runtersetzt sobald dein Fahrzeug in die Triggerbox hinein fährt.

    Triggerboxen würde ich nicht verwenden, ich meine ich weiß nicht, wie groß dein Spiel ist, aber wir haben mindestens einige tausend Kurven auf unserer Map, wenn man da immer Boxen setzten müsste, würde man ja wahnsinnig :)


    Du könntest das mit USplineComponent::GetRotationAtDistanceAlongSpline machen, indem du die Rotation der Spline an der aktuellen Stelle des Fahrzeugs und Ort des Fahrzeugs + x abfragst. Dann kannst du die Gradzahl eines Kurvenabschnittes berechnen und dann entweder anhand des Geschwindigkeitslimits, wenn du sowas hast, oder der aktuellen Geschwindigkeit berechnen, wie weit du abbremsen musst.

    • Offizieller Beitrag

    Stell dir vor du kaufst dir ein neues Auto und stellst in einem Forum die Frage wo man nun die Sitzheizung einschaltet.

    Woher sollen die Leute im Forum wissen um welche Automarke es sich handelt und um welche Ausführung.


    Um konkret helfen zu können brauchen wir schon ein mindest Anzahl an Informationen.


    Ich fürchte ohne zu wissen WIE du es geschafft hast damit dein Auto der Spline hinterher fährt, kann dir keiner Helfen.


    Ist das ein Blueprint, eine Animation ?


    Ich beantworte wirkliche gerne Fragen aber wenn man dann erst 10 mal nachfragen muss um zu erfahren worum es wirklich geht, ist das schon etwas nervig.

    Hoffe du bringst nun ein paar Informationen mehr mit der man als externer Betrachter auch etwas anfangen kann.

  • Ok. Danke für die Infos! Ich glaube mein Problem ist aber viel simpler. Wie ganz konkret passe ich denn die Geschwindigkeit an?

    Aktuelle Geschwindigkeit mit der Wunschgeschwindigkeit vergleichen, wenn sie drüber liegt bremsen und sonst beschleunigen? Oder was meinst du?

  • Ok. Also ich nehme mit:
    Ich muss zu bestimmten das Geschwindigkeitsdelta checken, und dann entprechend die Geschwindgkeit über Throttle anpassen. Der für mch entscheidene Punkt ist, ich muss die Geschwindigkeit indirekt über Throttle regeln.

    Ich kann sie der Klasse Fahrzeug nicht einfach mitteilen und das Fhrzeug regelt selbst.


    Vielen Dank!

  • Ich habe das Tutorial ja nicht nach programmiert, dass du als Grundlage verwendest. Aber warum sollte es nicht gehen? Das würde genau dem Grundgedanken der Objektorientierten Programmierung entsprechen.


    Wie gesagt, ich weiß ja nicht wie das Fahrzeug in dem Tutorial aufgebaut war. Aber du könntest dem Fahrzeug einen Wert Throtle (oder Gaspedal) geben und diesen dann ändern.


    Ich würde an der Stelle wirklich wie in der realen Welt denken, dass das Auto, bzw. der Fahrer in dem Auto, auch verantwortlich für die Geschwindigkeit ist. Du musst dem "Fahrer" dann nur noch von außen beibringen wann eine Kurve kommt. Und diesem Fall teilst du ihm das per Triggerbox mit, was vergleichbar wäre mit einem "Achtung Kurve" oder Geschwindigkeitsbegränzungsschild. Du könntest die Triggerbox im übrigen auch wirklich als solches "tarnen".