Body State

Kinematic Movement

Kinematic targets derive the velocity needed to reach a pose over a specified positive duration. This lets contacts transfer platform motion to Dynamic bodies. Repeated set_position() teleports do not express the same velocity-aware movement.

GML
body.move_kinematic(x, y, z, qx, qy, qz, qw, seconds)
body.move_kinematic_euler(x, y, z, rx, ry, rz, seconds)

Positions are world-space. Quaternion order is x,y,z,w; Euler angles are XYZ degrees. The duration is seconds, not microseconds. Submit a target consistent with the simulated interval and then update physics; do not multiply an absolute target position by delta_time.

GML
// One controlled 1/60-second interval; platform is Kinematic.
if (!platform.move_kinematic_euler(2, 0, 1, 0, 0, 0, 1/60)) {
    show_debug_message(jolt_get_error_message());
}
jolt_update(1/60);

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
JoltBody.move_kinematicJoltBody.move_kinematic(x, y, z, qx, qy, qz, qw, seconds)Boolean; Kinematic only. World target XYZ m, XYZW quaternion or Euler XYZ°, positive time in s. Computes velocity to reach the target; not a set_position teleport.
JoltBody.move_kinematic_eulerJoltBody.move_kinematic_euler(x, y, z, rx, ry, rz, seconds)Boolean; Kinematic only. World target XYZ m, XYZW quaternion or Euler XYZ°, positive time in s. Computes velocity to reach the target; not a set_position teleport.