Diferenciály a pohon
Propojí engine torque s jedním nebo dvěma indexy kol a řídí final ratio, left/right split a limited slip.
Explicitní diferenciály podporují FWD, RWD a AWD. Pokud žádný nepřidáte, build() seskupí driven kola do praktických automatických diferenciálů.
Syntaxe#
vehicle.add_differential(left_wheel, right_wheel, options=undefined)| Volba | Default | Validace |
|---|---|---|
| ratio | 3.42 | Konečný a větší než 0. |
| split | 0.5 | Rozdělení left/right od 0 do 1. |
| limited_slip_ratio | 1.4 | Konečný a větší než 1. |
| engine_torque_ratio | 1.0 | Podíl engine torque od 0 do 1. |
Rozložení pohonu#
// Pohon zadních kol
car.add_differential(2, 3, { engine_torque_ratio:1 });
// Pohon všech kol
car.add_differential(0, 1, { engine_torque_ratio:0.45 });
car.add_differential(2, 3, { engine_torque_ratio:0.55 });- Každý index musí existovat. -1 může znamenat chybějící stranu, ale nemohou chybět obě.
- Explicitní diferenciály přidávejte před build().
- Při automatické tvorbě se driven kola párují v pořadí přidání a torque se rozdělí mezi vzniklé páry.
- wheel.driven odráží driven flag; členství v explicitním diferenciálu je samostatná konfigurace.
Konfigurační objekt a settery#
var differential = jolt_vehicle_differential(0, 1);
differential.set_ratio(3.42);
differential.set_split(0.5);
car.add_differential(differential);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_differential | jolt_vehicle_differential(left, right) | Vytvoří nastavení s indexy left/right kol; záporný index značí chybějící stranu, alespoň jedna musí existovat při přidání. Vrací settings, ne diferenciál v simulaci. |
| JoltVehicle.add_differential | JoltVehicle.add_differential(left, right = undefined, options = undefined) | Před build; indexy kol + options nebo DifferentialSettings. Boolean. Poměr >0, split/engine fraction 0..1, limited slip >1; jedna strana může být záporná. |
| JoltVehicleDifferentialSettings.set_engine_torque_ratio | JoltVehicleDifferentialSettings.set_engine_torque_ratio(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Podíl 0..1, výchozí 1. |
| JoltVehicleDifferentialSettings.set_limited_slip_ratio | JoltVehicleDifferentialSettings.set_limited_slip_ratio(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Poměr > 1, výchozí 1.4. |
| JoltVehicleDifferentialSettings.set_ratio | JoltVehicleDifferentialSettings.set_ratio(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Převod > 0, výchozí 3.42. |
| JoltVehicleDifferentialSettings.set_split | JoltVehicleDifferentialSettings.set_split(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Rozdělení vlevo/vpravo 0..1, výchozí 0.5. |