Wheels
Adds a virtual wheel to the draft vehicle and returns its zero-based index or false on failure.
The position is a suspension hard point in chassis-local space. Radius, width, suspension, traction, steering, drive and braking are configured before build().
Syntax#
vehicle.add_wheel(local_x, local_y, local_z, options=undefined)Geometry and suspension options#
| Field | Default | Validation / meaning |
|---|---|---|
| radius | 0.35 | Finite and greater than 0. |
| width | 0.20 | Finite and greater than 0. |
| suspension_min | 0.10 | Finite and at least 0. |
| suspension_max | 0.40 | Finite, greater than 0 and not below minimum. |
| suspension_direction | {x:0,y:0,z:-1} | Finite non-zero local direction; normalized natively. |
| suspension_force_point | automatic | Optional local point where suspension force is applied. |
| suspension_preload | 0 | Finite non-negative preload length. |
| suspension_frequency | 1.5 | Spring frequency in Hz; greater than 0. |
| suspension_damping | 0.5 | Finite non-negative damping ratio. |
Control and tyre options#
| Field | Default | Effect |
|---|---|---|
| steering | false | Makes the default maximum steering angle 35 degrees. |
| max_steering_angle | 35 or 0 | 0..90 degrees; multiplied by steering input. |
| driven | false | Includes the wheel in automatic differential creation. |
| brake | true | Makes the default max_brake_torque 1500. |
| max_brake_torque | 1500 or 0 | Non-negative service-brake torque. |
| handbrake | false | Makes the default max_handbrake_torque 4000. |
| max_handbrake_torque | 4000 or 0 | Non-negative handbrake torque. |
| inertia | 0.9 | Positive wheel rotational inertia. |
| angular_damping | 0.2 | Non-negative wheel angular damping. |
| longitudinal_friction | 1.0 | Non-negative multiplier over Jolt's default curve. |
| lateral_friction | 1.0 | Non-negative multiplier over Jolt's default curve. |
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
});Current project integrations#
Configuration object and setters#
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);Configuration factories return a GML settings object and create no physics. Their setters return self, the settings object, and do not confirm that a value is valid. Fields are consumed and validated by jolt_vehicle, add_wheel or add_differential. An omitted field preserves the corresponding options default described above. Editing settings after consumption does not change an existing vehicle, wheel or differential. Settings need no destroy.
Vehicle creation returns undefined on failure. add_differential returns Boolean; add_wheel returns a numeric zero-based index or Boolean false on failure. Index 0 is success: do not use only if (!wheel_index). Complete wheel/differential configuration before build().
set_orientation(fx,fy,fz,ux=0,uy=0,uz=1) uses chassis-local directions. Forward/up must be finite, nonzero and perpendicular; add_wheel validates them. set_forward(x,y,z=0) also selects default up +Z. A failure after native wheel configuration starts is not atomic; correct the data and recreate the draft after failure.
Verified operation contracts#
These contracts distinguish units, return values, errors and lifetime according to the current implementation. Check results: false, 0 and undefined can mean different things for different methods.
| Symbol / owner | Signature | Operation contract |
|---|---|---|
| jolt_vehicle_wheel | jolt_vehicle_wheel(x, y, z) | Creates wheel settings with a chassis-local XYZ position. Configure dimensions/orientation before vehicle.add_wheel; not a JoltBody. |
| JoltVehicle.add_wheel | JoltVehicle.add_wheel(x, y = undefined, z = undefined, options = undefined) | Before build; XYZ + options or WheelSettings. Returns a zero-based index, false on failure: index 0 is success. Failure of subsequent configuration may leave the native draft wheel; correct settings and recreate the draft. |
| JoltVehicleWheelSettings.set_angular_damping | JoltVehicleWheelSettings.set_angular_damping(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. >= 0, default 0.2. |
| JoltVehicleWheelSettings.set_brake | JoltVehicleWheelSettings.set_brake(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Flags; defaults false/false/true/false. Steering/brake/handbrake select default angle or torque; explicit numeric settings take precedence. |
| JoltVehicleWheelSettings.set_driven | JoltVehicleWheelSettings.set_driven(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Flags; defaults false/false/true/false. Steering/brake/handbrake select default angle or torque; explicit numeric settings take precedence. |
| JoltVehicleWheelSettings.set_forward | JoltVehicleWheelSettings.set_forward(x, y, z=0) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Nonzero finite perpendicular forward/up vectors are normalized. set_forward uses +Z up; configure before add_wheel. |
| JoltVehicleWheelSettings.set_handbrake | JoltVehicleWheelSettings.set_handbrake(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Flags; defaults false/false/true/false. Steering/brake/handbrake select default angle or torque; explicit numeric settings take precedence. |
| JoltVehicleWheelSettings.set_inertia | JoltVehicleWheelSettings.set_inertia(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. > 0 kg·m², default 0.9. |
| JoltVehicleWheelSettings.set_lateral_friction | JoltVehicleWheelSettings.set_lateral_friction(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Friction-curve multiplier >= 0, default 1. |
| JoltVehicleWheelSettings.set_longitudinal_friction | JoltVehicleWheelSettings.set_longitudinal_friction(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Friction-curve multiplier >= 0, default 1. |
| JoltVehicleWheelSettings.set_max_brake_torque | JoltVehicleWheelSettings.set_max_brake_torque(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. >= 0 N·m; defaults 1500/4000 with the corresponding brake enabled, otherwise 0. |
| JoltVehicleWheelSettings.set_max_handbrake_torque | JoltVehicleWheelSettings.set_max_handbrake_torque(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. >= 0 N·m; defaults 1500/4000 with the corresponding brake enabled, otherwise 0. |
| JoltVehicleWheelSettings.set_max_steering_angle | JoltVehicleWheelSettings.set_max_steering_angle(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. 0..90°; default 35 with steering=true, otherwise 0. |
| JoltVehicleWheelSettings.set_orientation | JoltVehicleWheelSettings.set_orientation(fx, fy, fz, ux=0, uy=0, uz=1) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Nonzero finite perpendicular forward/up vectors are normalized. set_forward uses +Z up; configure before add_wheel. |
| JoltVehicleWheelSettings.set_position | JoltVehicleWheelSettings.set_position(x, y, z) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Chassis-local XYZ in m; force point enables a custom suspension force point. |
| JoltVehicleWheelSettings.set_radius | JoltVehicleWheelSettings.set_radius(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Positive dimensions in m; defaults radius 0.35, width 0.2. |
| JoltVehicleWheelSettings.set_steering | JoltVehicleWheelSettings.set_steering(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Flags; defaults false/false/true/false. Steering/brake/handbrake select default angle or torque; explicit numeric settings take precedence. |
| JoltVehicleWheelSettings.set_suspension_damping | JoltVehicleWheelSettings.set_suspension_damping(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Ratio >= 0, default 0.5. |
| JoltVehicleWheelSettings.set_suspension_direction | JoltVehicleWheelSettings.set_suspension_direction(x, y, z) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Local finite nonzero vector, normalized when passed to native. |
| JoltVehicleWheelSettings.set_suspension_force_point | JoltVehicleWheelSettings.set_suspension_force_point(x, y, z) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Chassis-local XYZ in m; force point enables a custom suspension force point. |
| JoltVehicleWheelSettings.set_suspension_frequency | JoltVehicleWheelSettings.set_suspension_frequency(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. > 0 Hz, default 1.5. |
| JoltVehicleWheelSettings.set_suspension_max | JoltVehicleWheelSettings.set_suspension_max(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Lengths in m, min <= max; defaults 0.1/0.4. |
| JoltVehicleWheelSettings.set_suspension_min | JoltVehicleWheelSettings.set_suspension_min(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Lengths in m, min <= max; defaults 0.1/0.4. |
| JoltVehicleWheelSettings.set_suspension_preload | JoltVehicleWheelSettings.set_suspension_preload(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Length >= 0 m, default 0. |
| JoltVehicleWheelSettings.set_width | JoltVehicleWheelSettings.set_width(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Positive dimensions in m; defaults radius 0.35, width 0.2. |