Tempomat für Schrittgeschwindigkeit?

  • Hallo zusammen,


    kann mir jemand einen Mod empfehlen, mit welchem man beliebige Geschwindigkeiten wie bei einem Tempomat festlegen kann mit einer Taste? Es gibt einen Begrenzer (weiß grad nicht in welchem Mod der drin steckt) der aber erst ab ca. 20/30 kmh funktioniert. Speziell interessiert bin ich an einem Tempomat/Begrenzer der für Schrittgeschwindigkeit geeignet ist. Einsatzzweck: Panzergrenadiere. Synchrone Geschwindigkeit von Fahrzeug von abgesessenen Teilen soll erzielt werden.


    Danke und Gruß,
    Schmitt

  • Werte im Arsenal getestet
    Marsch Marsch 14km/h
    Marsch Marsch mit gesenkter Waffe 12km/h
    Marsch Marsch mit combat stance 11km/h
    Marsch Marsch mit gesenkter Waffe und combat stance 10km/h


    Also sollte sich das wunderbar mit den 10km/h von ACE synchronisieren lassen.

  • Ein Blick in die


    \ace_vehicles\z\ace\addons\vehicles\functions\fnc_speedLimiter.sqf


    zeigt in Zeile 31 den Befehl, welcher es nicht möglich macht unterhalb von 10 km/h zu limitieren:


    private _maxSpeed = speed _vehicle max 10;


    Da stellt sich mir die Frage, warum haben die ACE Entwickler diese Zeile reingepackt? Was ist daran so schlimm bei z. B. 6 km/h zu limitieren?

  • Extrahieren alleine würde ja nicht helfen. Dann müsste man ja noch oben drauf die Funktionalität programmieren, dass via Tastendruck die Funktion aufgerufen wird. Das wäre aber nicht das Hindernis. Problematisch sehe ich dann, dass es gleichzeitig zwei Begrenzer gibt. Den eigenen und den von ACE. Schöner wäre es da den ACE Minspeed rauszunehmen. Sind ACE Entwickler unter uns, die mir die Notwendigkeit von min 10 erklären können oder falls nicht diese beim nächsten Update rausnehmen?

  • Soweit ich weiß, müssen die Fahrzeuge mindestens 10 km/h fahren, da sie sonst einfach anhalten. Das Fahrzeug geht dann selbständig auf die Bremse ( vor allem Kettenfahrzeuge). Das ist bedingt durch die Arma interne Fahrzeugphysik. Deshalb wurde der ACE-Tempomat so eingestellt.

  • Also ich weiß jetzt nicht, wie's auf 'nem dedizierten Server aussehen würde, aber bei mir bewegen sich sowohl Radfahrzeuge, als auch Kettenfahrzeuge, wenn ich die Begrenzung auf 5km/h setze. Ruckelt natürlich ganz schön durch den PerFrameHandler, aber funktionieren tut's schon. Wenn sich das (Ketten-)Fahrzeug von selbst auf 10km/h verlangsamt, bremst es sofort ab, aber solange man Gas gibt, fährt es auch mit 5km/h.


    Hat sich da eventuell was geändert?


    Mit Code wie diesem wird, soweit ich das erkennen kann, das keybind von ace einfach überschrieben bzw. umgeleitet:


  • Ihr redet von einem Begrenzer, der TE fordert einen Tempomaten. Das ist doch etwas komplett anderes.
    Soweit wie ich es verstanden haben, will er eine Taste x bei Geschwindigkeit y drücken und das Fahrzeug soll diese halten ohne irgendwelchen Input.


    Da muss man m.M.n. damit ran, dass eine Scheife gesetzt wird, die die Geschwindigkeit abfragt. Wenn durch fehlenden Input die Geschwindigkeit sinkt, muss es mit setVelocity beschleunigt werden. Fraglich wie sich das Fahrzeug dann beim Befahren einer Bergkuppe verhält.

  • Tempomat und Begrenzer sind nicht wirklich verschieden. Zumindest im SQF Script. Der Begrenzer überprüft ja ob man zu schnell ist und wenn ja nimmt er mit setVelocity ein wenig Geschwindigkeit weg. Das muss man für einen Tempomat ja nur nochmal kopieren und umdrehen. Sodass wenn man zu schnell ist der Begrenzer greif und wenn man zu Langsam ist der Tempomat. Der Tempomat beschleunigt dann eben mit setVelocity anstatt zu verlangsamen wie der Begrenzer es tut.
    Also vielleicht so

    Code
    1. if (_speed > _maxSpeed) then {
    2. _vehicle setVelocity ((velocity _vehicle) vectorMultiply ((_maxSpeed / _speed) - 0.00001));
    3. } else {
    4. _vehicle setVelocity ((velocity _vehicle) vectorMultiply ((_maxSpeed / _speed) + 0.00001));
    5. };

    Ich habe davon nichts getestet. Einfach nur ein Vorschlag. Ich denke das könnte so gehen.

  • Warum nicht einfach

    Code
    1. if(speed _veh != _setSpeed) then {
    2. _veh setVelocity (vetorNormalized velocity vehicle * _setSpeed);
    3. };

    Warum machst du da ne Fallunterscheidung und änderst den Faktor um diesen kleinen Wert @dedmen? ?(


    Einen weicheren Übergang könnte man dann noch mittels setVelocityTransformation erzielen...

  • Warum nicht einfach

    Code
    1. if(speed _veh != _setSpeed) then {
    2. _veh setVelocity (vetorNormalized velocity vehicle * (_setSpeed / speed _veh));
    3. };

    Warum machst du da ne Fallunterscheidung und änderst den Faktor um diesen kleinen Wert @dedmen? ?(


    Einen weicheren Übergang könnte man dann noch mittels setVelocityTransformation erzielen...

    Weil ich nicht groß drüber nachgedacht habe und nur meinen ersten Gedanken niedergeschrieben habe ;)
    Ich glaube nicht das vectorNormalized hier richtig ist :o

  • @Kickapoo hats erfasst. Der Begrenzer ist auf 10 km/h begrenzt, da PhysX die Fahrzeuge unter 10 km/h mit der "Handbremse" abwürgt.
    @Belbo
    >Ruckelt natürlich ganz schön durch den PerFrameHandler
    Der PFH "ruckelt" nicht. Die Handbremse würgt das Fahrzeug unter 10 km/h ab und das sieht dann so aus, wie es bei dir aussieht!
    @dedmen
    >Tempomat und Begrenzer sind nicht wirklich verschieden. Zumindest im SQF Script.
    Na wenn du meinst. Ich glaube ein Tempomat ist nicht trivial. Nur setVelocity wird dich wahrscheinlich in Hauswände reindrücken und PhysX wird dir Reactio = 100 * Actio geben!

  • @Belbo
    >Ruckelt natürlich ganz schön durch den PerFrameHandler
    Der PFH "ruckelt" nicht. Die Handbremse würgt das Fahrzeug unter 10 km/h ab und das sieht dann so aus, wie es bei dir aussieht!

    Das klingt plausibel. Mich persönlich stört das minimale Zucken der Fahrzeuge jetzt allerdings nicht wirklich - es ist jetzt ja nicht so, als ob jeder Client abschmiert, wenn man die Höchstgeschwindigkeit unterhalb von 10km/h ansetzt. Ein bisschen Gerückel kommt schließlich auch bei Geschwindigkeiten über 10km/h.

  • Ich glaube nicht das vectorNormalized hier richtig ist :o

    Doch damit erhät man die Richtung, in der das Fahrzeug gerade fährt und wenn man diesen normierten Vektor, dann mit einer Zahl multipliziert erhält man einen Vektor in der gewünschten Länge und in diesem Fall entspricht ja die Länge des Vektors der Geschwindigkeit... ;)

  • Das klingt plausibel. Mich persönlich stört das minimale Zucken der Fahrzeuge jetzt allerdings nicht wirklich - es ist jetzt ja nicht so, als ob jeder Client abschmiert, wenn man die Höchstgeschwindigkeit unterhalb von 10km/h ansetzt. Ein bisschen Gerückel kommt schließlich auch bei Geschwindigkeiten über 10km/h.

    @Belbo und @Commander
    Ich hab gerade den Begrenzer mit Folgendem Code ausprobiert


    Dabei ist mir aber kein Ruckeln aufgefallen. Lief alles flüssig, sogar bei 1km/h.
    Als ich das selbe vor ein paar Monaten ausprobiert hatte hatte es aber geruckelt wie sau.
    Kann sich da Seitens BI was geändert haben? Oder wie ist euch das geruckel aufgefallen?


    @[JgZg-A] Schmitt, was auch hilft ist ein analoges Eingabegerät wie ein Joystick oder Lenkrad mit Pedalen. Damit kann man die Geschwindigkeit wunderbar auf Schritt halten.