Vehicles

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#

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

Geometry and suspension options#

FieldDefaultValidation / meaning
radius0.35Finite and greater than 0.
width0.20Finite and greater than 0.
suspension_min0.10Finite and at least 0.
suspension_max0.40Finite, greater than 0 and not below minimum.
suspension_direction{x:0,y:0,z:-1}Finite non-zero local direction; normalized natively.
suspension_force_pointautomaticOptional local point where suspension force is applied.
suspension_preload0Finite non-negative preload length.
suspension_frequency1.5Spring frequency in Hz; greater than 0.
suspension_damping0.5Finite non-negative damping ratio.

Control and tyre options#

FieldDefaultEffect
steeringfalseMakes the default maximum steering angle 35 degrees.
max_steering_angle35 or 00..90 degrees; multiplied by steering input.
drivenfalseIncludes the wheel in automatic differential creation.
braketrueMakes the default max_brake_torque 1500.
max_brake_torque1500 or 0Non-negative service-brake torque.
handbrakefalseMakes the default max_handbrake_torque 4000.
max_handbrake_torque4000 or 0Non-negative handbrake torque.
inertia0.9Positive wheel rotational inertia.
angular_damping0.2Non-negative wheel angular damping.
longitudinal_friction1.0Non-negative multiplier over Jolt's default curve.
lateral_friction1.0Non-negative multiplier over Jolt's default curve.
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
});

Current project integrations#

Configuration object and setters#

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);

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 / ownerSignatureOperation contract
jolt_vehicle_wheeljolt_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_wheelJoltVehicle.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_dampingJoltVehicleWheelSettings.set_angular_damping(value)Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. >= 0, default 0.2.
JoltVehicleWheelSettings.set_brakeJoltVehicleWheelSettings.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_drivenJoltVehicleWheelSettings.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_forwardJoltVehicleWheelSettings.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_handbrakeJoltVehicleWheelSettings.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_inertiaJoltVehicleWheelSettings.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_frictionJoltVehicleWheelSettings.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_frictionJoltVehicleWheelSettings.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_torqueJoltVehicleWheelSettings.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_torqueJoltVehicleWheelSettings.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_angleJoltVehicleWheelSettings.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_orientationJoltVehicleWheelSettings.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_positionJoltVehicleWheelSettings.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_radiusJoltVehicleWheelSettings.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_steeringJoltVehicleWheelSettings.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_dampingJoltVehicleWheelSettings.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_directionJoltVehicleWheelSettings.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_pointJoltVehicleWheelSettings.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_frequencyJoltVehicleWheelSettings.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_maxJoltVehicleWheelSettings.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_minJoltVehicleWheelSettings.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_preloadJoltVehicleWheelSettings.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_widthJoltVehicleWheelSettings.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.