Vehicles

Kola

Přidá virtuální kolo do draftu vozidla a vrátí jeho index od nuly nebo false při selhání.

Pozice je suspension hard point v lokálním prostoru chassis. Radius, šířka, odpružení, trakce, řízení, pohon a brzdy se nastavují před build().

Syntaxe#

Syntax
vehicle.add_wheel(local_x, local_y, local_z, options=undefined)

Geometrie a odpružení#

PoleDefaultValidace / význam
radius0.35Konečný a větší než 0.
width0.20Konečný a větší než 0.
suspension_min0.10Konečný a nejméně 0.
suspension_max0.40Konečný, větší než 0 a nejméně minimum.
suspension_direction{x:0,y:0,z:-1}Konečný nenulový lokální směr; nativně se normalizuje.
suspension_force_pointautomatickýVolitelný lokální bod působení síly odpružení.
suspension_preload0Konečná nezáporná preload délka.
suspension_frequency1.5Frekvence pružiny v Hz; větší než 0.
suspension_damping0.5Konečné nezáporné tlumení.

Ovládání a pneumatika#

PoleDefaultÚčinek
steeringfalseNastaví výchozí maximum řízení na 35 stupňů.
max_steering_angle35 nebo 00..90 stupňů násobených steering inputem.
drivenfalseZařadí kolo do automatické tvorby diferenciálů.
braketrueVýchozí max_brake_torque bude 1500.
max_brake_torque1500 nebo 0Nezáporný moment provozní brzdy.
handbrakefalseVýchozí max_handbrake_torque bude 4000.
max_handbrake_torque4000 nebo 0Nezáporný moment ruční brzdy.
inertia0.9Kladná rotační setrvačnost kola.
angular_damping0.2Nezáporné úhlové tlumení kola.
longitudinal_friction1.0Nezáporný násobič výchozí Jolt křivky.
lateral_friction1.0Nezáporný násobič výchozí Jolt křivky.
GML
var front_left = car.add_wheel(-0.8, 1.4, -0.2, {
    radius: 0.35,
    width: 0.2,
    steering: true,
    driven: true,
    suspension_frequency: 1.8,
    suspension_damping: 0.65
});

Integrace s aktuálním projektem#

Konfigurační objekt a settery#

GML
var wheel = jolt_vehicle_wheel(-0.8, 1.4, -0.2);
wheel.set_radius(0.35);
wheel.set_driven(true);
wheel.set_steering(true);
var wheel_index = car.add_wheel(wheel);

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().

set_orientation(fx,fy,fz,ux=0,uy=0,uz=1) používá směry v lokálním prostoru chassis. Forward/up musí být konečné, nenulové a kolmé; validace proběhne v add_wheel. set_forward(x,y,z=0) nastaví současně výchozí up +Z. Případné chybné přidání po zahájení nativní konfigurace není atomické; po chybě oprav data a vytvoř draft znovu.

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íkSignaturaKontrakt operace
jolt_vehicle_wheeljolt_vehicle_wheel(x, y, z)Vytvoří settings kola s místní XYZ pozicí podvozku. Rozměry a orientaci nastav před vehicle.add_wheel; nejde o JoltBody.
JoltVehicle.add_wheelJoltVehicle.add_wheel(x, y = undefined, z = undefined, options = undefined)Před build; XYZ + options nebo WheelSettings. Vrací index od 0, při chybě false: index 0 je úspěch. Selhání následného nastavení nemusí vrátit rozpracované native kolo zpět; oprav konfiguraci a vytvoř nový draft.
JoltVehicleWheelSettings.set_angular_dampingJoltVehicleWheelSettings.set_angular_damping(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. >= 0, výchozí 0.2.
JoltVehicleWheelSettings.set_brakeJoltVehicleWheelSettings.set_brake(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Příznaky; výchozí false/false/true/false. Steering/brake/handbrake určují výchozí úhel či moment, explicitní číselný parametr má přednost.
JoltVehicleWheelSettings.set_drivenJoltVehicleWheelSettings.set_driven(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Příznaky; výchozí false/false/true/false. Steering/brake/handbrake určují výchozí úhel či moment, explicitní číselný parametr má přednost.
JoltVehicleWheelSettings.set_forwardJoltVehicleWheelSettings.set_forward(x, y, z=0)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Nenulové konečné kolmé forward/up vektory se normalizují. set_forward používá up +Z; orientaci změň před add_wheel.
JoltVehicleWheelSettings.set_handbrakeJoltVehicleWheelSettings.set_handbrake(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Příznaky; výchozí false/false/true/false. Steering/brake/handbrake určují výchozí úhel či moment, explicitní číselný parametr má přednost.
JoltVehicleWheelSettings.set_inertiaJoltVehicleWheelSettings.set_inertia(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. > 0 kg·m², výchozí 0.9.
JoltVehicleWheelSettings.set_lateral_frictionJoltVehicleWheelSettings.set_lateral_friction(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Násobitel třecí křivky >= 0, výchozí 1.
JoltVehicleWheelSettings.set_longitudinal_frictionJoltVehicleWheelSettings.set_longitudinal_friction(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Násobitel třecí křivky >= 0, výchozí 1.
JoltVehicleWheelSettings.set_max_brake_torqueJoltVehicleWheelSettings.set_max_brake_torque(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. >= 0 N·m; výchozí 1500/4000 při zapnuté příslušné brzdě, jinak 0.
JoltVehicleWheelSettings.set_max_handbrake_torqueJoltVehicleWheelSettings.set_max_handbrake_torque(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. >= 0 N·m; výchozí 1500/4000 při zapnuté příslušné brzdě, jinak 0.
JoltVehicleWheelSettings.set_max_steering_angleJoltVehicleWheelSettings.set_max_steering_angle(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. 0..90°; výchozí 35 při steering=true, jinak 0.
JoltVehicleWheelSettings.set_orientationJoltVehicleWheelSettings.set_orientation(fx, fy, fz, ux=0, uy=0, uz=1)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Nenulové konečné kolmé forward/up vektory se normalizují. set_forward používá up +Z; orientaci změň před add_wheel.
JoltVehicleWheelSettings.set_positionJoltVehicleWheelSettings.set_position(x, y, z)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Místní XYZ v m vůči podvozku; force point zapne vlastní bod působení pružiny.
JoltVehicleWheelSettings.set_radiusJoltVehicleWheelSettings.set_radius(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Kladné rozměry v m; výchozí radius 0.35, width 0.2.
JoltVehicleWheelSettings.set_steeringJoltVehicleWheelSettings.set_steering(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Příznaky; výchozí false/false/true/false. Steering/brake/handbrake určují výchozí úhel či moment, explicitní číselný parametr má přednost.
JoltVehicleWheelSettings.set_suspension_dampingJoltVehicleWheelSettings.set_suspension_damping(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Poměr >= 0, výchozí 0.5.
JoltVehicleWheelSettings.set_suspension_directionJoltVehicleWheelSettings.set_suspension_direction(x, y, z)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Místní konečný nenulový vektor, při předání native normalizovaný.
JoltVehicleWheelSettings.set_suspension_force_pointJoltVehicleWheelSettings.set_suspension_force_point(x, y, z)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Místní XYZ v m vůči podvozku; force point zapne vlastní bod působení pružiny.
JoltVehicleWheelSettings.set_suspension_frequencyJoltVehicleWheelSettings.set_suspension_frequency(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. > 0 Hz, výchozí 1.5.
JoltVehicleWheelSettings.set_suspension_maxJoltVehicleWheelSettings.set_suspension_max(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Délky v m, min <= max; výchozí 0.1/0.4.
JoltVehicleWheelSettings.set_suspension_minJoltVehicleWheelSettings.set_suspension_min(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Délky v m, min <= max; výchozí 0.1/0.4.
JoltVehicleWheelSettings.set_suspension_preloadJoltVehicleWheelSettings.set_suspension_preload(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Délka >= 0 m, výchozí 0.
JoltVehicleWheelSettings.set_widthJoltVehicleWheelSettings.set_width(value)Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Kladné rozměry v m; výchozí radius 0.35, width 0.2.