Převodovka a rychlosti
Před build() nastavuje automatický nebo manuální režim, časování, shift thresholds, clutch strength a převodové poměry.
Výchozí je automat. Manuální převodovka podporuje runtime set_gear(); jeho volání v automatickém režimu selže.
Volby převodovky#
| Pole | Pravidlo / význam |
|---|---|
| automatic | Výchozí true; false zvolí manuální režim. |
| mode | JOLT_VEHICLE_TRANSMISSION_AUTOMATIC nebo MANUAL; při zadání má přednost před automatic. |
| switch_time | Nezáporná doba změny převodu. |
| clutch_release_time | Nezáporná doba uvolnění spojky. |
| switch_latency | Nezáporná prodleva mezi automatickými změnami. |
| shift_up_rpm / shift_down_rpm | Kladné prahy automatického řazení. |
| clutch_strength | Kladná síla spojky. |
| forward_gears | Nejvýše 16 kladných forward ratios. |
| reverse_gears | Nejvýše 16 kladných velikostí; nativní ratio bude záporné. |
var car = jolt_vehicle(chassis, {
transmission: {
mode: JOLT_VEHICLE_TRANSMISSION_MANUAL,
forward_gears: [3.2, 2.1, 1.4, 1.0, 0.82],
reverse_gears: [3.0],
clutch_strength: 10
}
});Manuální řazení#
car.set_gear(1, 1); // první převod vpřed, plně sepnutá spojka
car.set_gear(0, 0); // neutrál
car.set_gear(-1, 1); // zpátečka| Argument | Rozsah |
|---|---|
| gear | -16..16; záporný reverse, nula neutral, kladný forward. |
| clutch | 0..1; default 1. |
Konfigurační objekt a settery#
var transmission = jolt_vehicle_transmission();
transmission.set_automatic(true);
transmission.set_forward_gears([3.0, 2.0, 1.2]);
transmission.set_reverse_gears([3.0]);
var settings = jolt_vehicle_settings();
settings.set_transmission(transmission);
var car = jolt_vehicle(chassis, settings);Konfigurační factories vracejí GML objekt nastavení; samy nevytvářejí fyziku. Jejich settery vracejí self, tedy tento objekt, a nejsou potvrzením platnosti hodnoty. Pole se spotřebují a ověří při jolt_vehicle, add_wheel nebo add_differential. Vynechané pole zachová default odpovídajícího options zápisu uvedený výše. Změna nastavení po jeho použití nemění existující vozidlo, kolo ani diferenciál. Nastavení nepotřebuje destroy.
Vozidlo při chybě vytvoření vrací undefined. add_differential vrací Boolean; add_wheel vrací číselný index začínající nulou, nebo Boolean false při chybě. Index 0 je úspěch: nepoužívej pouze if (!wheel_index). Konfiguraci kol a diferenciálů dokonči před build().
Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| jolt_vehicle_transmission | jolt_vehicle_transmission() | Vytvoří prázdný settings objekt. Nevyžaduje svět, nevytváří fyziku; settery vrací self. Vynechané vlastnosti přenechá defaultům při jolt_vehicle. |
| JoltVehicle.set_gear | JoltVehicle.set_gear(gear,clutch=1) | Index převodu (0 neutrál, záporný zpátečka), clutch default 1; Boolean, dostupnost převodu ověří native. Použij pro ruční řazení. |
| JoltVehicleTransmissionSettings.set_automatic | JoltVehicleTransmissionSettings.set_automatic(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Automatic Boolean nebo JOLT_VEHICLE_TRANSMISSION_AUTOMATIC/MANUAL. Obě metody synchronizují mode/automatic. |
| JoltVehicleTransmissionSettings.set_clutch_release_time | JoltVehicleTransmissionSettings.set_clutch_release_time(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečný čas >= 0 s. |
| JoltVehicleTransmissionSettings.set_clutch_strength | JoltVehicleTransmissionSettings.set_clutch_strength(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečná síla spojky > 0; parametr přenosu momentu, ne rychlost vozidla. |
| JoltVehicleTransmissionSettings.set_forward_gears | JoltVehicleTransmissionSettings.set_forward_gears(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Pole 1–16 kladných konečných převodů. Zpátečka se také zadává kladně; znaménko doplní native. Pole nahrazuje celý seznam. |
| JoltVehicleTransmissionSettings.set_mode | JoltVehicleTransmissionSettings.set_mode(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Automatic Boolean nebo JOLT_VEHICLE_TRANSMISSION_AUTOMATIC/MANUAL. Obě metody synchronizují mode/automatic. |
| JoltVehicleTransmissionSettings.set_reverse_gears | JoltVehicleTransmissionSettings.set_reverse_gears(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Pole 1–16 kladných konečných převodů. Zpátečka se také zadává kladně; znaménko doplní native. Pole nahrazuje celý seznam. |
| JoltVehicleTransmissionSettings.set_shift_down_rpm | JoltVehicleTransmissionSettings.set_shift_down_rpm(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečný práh > 0 RPM. |
| JoltVehicleTransmissionSettings.set_shift_up_rpm | JoltVehicleTransmissionSettings.set_shift_up_rpm(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečný práh > 0 RPM. |
| JoltVehicleTransmissionSettings.set_switch_latency | JoltVehicleTransmissionSettings.set_switch_latency(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečný čas >= 0 s. |
| JoltVehicleTransmissionSettings.set_switch_time | JoltVehicleTransmissionSettings.set_switch_time(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečný čas >= 0 s. |