Quick answer: A Rigidbody is kinematic while its Collision Detection is Continuous or Continuous Dynamic, which kinematic bodies cannot use. Use Continuous Speculative (or Discrete) for kinematic bodies. When you toggle isKinematic at runtime, change collisionDetectionMode to Continuous Speculative before making the body kinematic, and restore it after.
This warning usually appears when you pick up or carry a physics object, ragdoll a character, or animate a platform: anything that flips a Rigidbody between physics-driven and script-driven. Unity is telling you the combination you set is not supported, and the fix is the order of two lines.
The exact warning
[Physics.PhysX] Kinematic body only supports Speculative Continuous collision detection
The collision detection modes
- Discrete: checks overlaps once per physics step. Cheapest; fast objects can tunnel.
- Continuous: sweeps against static colliders. Dynamic bodies only.
- Continuous Dynamic: sweeps against static colliders and other continuous bodies. Dynamic bodies only.
- Continuous Speculative: predicts contacts from velocity. Works for dynamic and kinematic bodies; can occasionally report contacts slightly early.
Kinematic bodies are moved by your code, not by the solver, so the sweep-based modes do not apply to them. Only Discrete and Continuous Speculative are valid.
Fix 1: in the Inspector
If the body is always kinematic (a moving platform, a door, a character controller using a kinematic Rigidbody), set Collision Detection to Continuous Speculative or Discrete on the Rigidbody and the warning is gone.
Fix 2: toggling isKinematic at runtime
For objects that switch modes (held items, ragdolls, thrown objects), change the collision mode first:
public class Grabbable : MonoBehaviour
{
Rigidbody rb;
CollisionDetectionMode thrownMode = CollisionDetectionMode.ContinuousDynamic;
void Awake() => rb = GetComponent<Rigidbody>();
public void PickUp()
{
rb.collisionDetectionMode = CollisionDetectionMode.ContinuousSpeculative;
rb.isKinematic = true;
}
public void Throw(Vector3 velocity)
{
rb.isKinematic = false;
rb.collisionDetectionMode = thrownMode;
rb.linearVelocity = velocity; // rb.velocity before Unity 6
}
}
Order matters in both directions: become kinematic only after switching to Speculative, and switch back to a sweep mode only after becoming dynamic again.
Ragdolls
Ragdolls generated by the Ragdoll Wizard have many Rigidbodies, all kinematic while animated. Loop over them with the same order when enabling or disabling the ragdoll. Most ragdoll limbs do not need Continuous Dynamic at all; Discrete or Speculative is usually enough and cheaper.
Which mode should fast objects use?
For fast dynamic objects (bullets with colliders, thrown objects), Continuous Dynamic prevents tunneling through other moving bodies. For kinematic movers that must not pass through things, use Continuous Speculative, or move them with Rigidbody.MovePosition in FixedUpdate and keep speeds reasonable. Very fast projectiles are often better as raycasts than as physics bodies.
Physics bugs players hit
The warning is harmless compared with what it hints at: objects tunneling through floors, items dropping out of the world. Players report those as “my item disappeared”. Bugnet's Unity SDK lets them file it from an in-game widget with a screenshot and device details, and captures any exceptions that follow automatically.
Related problems
- Fix: Unity Rigidbody Falling Through the Floor
- Fix: Unity Rigidbody Jittery or Stuttering Movement
- How to Fix Objects Falling Through the Floor in Unity
Frequently asked questions
What does “Kinematic body only supports Speculative Continuous collision detection” mean?
A kinematic Rigidbody has Collision Detection set to Continuous or Continuous Dynamic, which only dynamic bodies support. Use Continuous Speculative or Discrete.
How do I toggle isKinematic without the warning?
Set collisionDetectionMode to ContinuousSpeculative before setting isKinematic to true, and restore the previous mode only after setting isKinematic back to false.
Which collision detection mode should a kinematic Rigidbody use?
Continuous Speculative if it moves fast and must not miss contacts, otherwise Discrete.
Speculative first, then kinematic. Dynamic first, then continuous.