PHYSICS ENGINE • PHYSX

Unity Rigidbody Not Moving or Falling Through Floor

Fix physics glitches where objects ignore forces, drop straight through terrain, or freeze in place unexpectedly.

Common Root Causes

  • IsKinematic Enabled: If isKinematic = true, the Rigidbody completely ignores all gravity and AddForce() calls.
  • High Mass vs Weak Force: If mass is 1000 kg and force applied is only 10N, acceleration is negligible (0.01 m/s²).
  • Continuous Collision Missing: Fast-moving objects tunnel through thin floor colliders in discrete mode.
  • Constraints Checked: Freeze Position X, Y, or Z is accidentally checked in the Inspector.
1

Verified Physics Force Execution Script

ProperRigidbodyPush.cs (C#)
using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class ProperRigidbodyPush : MonoBehaviour
{
    private Rigidbody rb;

    private void Awake()
    {
        rb = GetComponent<Rigidbody>();

        // 1. Ensure kinematic is FALSE so physics can move it
        rb.isKinematic = false;

        // 2. Set Continuous Speculative or Continuous to prevent floor tunneling
        rb.collisionDetectionMode = CollisionDetectionMode.Continuous;

        // 3. Interpolate for jitter-free movement
        rb.interpolation = RigidbodyInterpolation.Interpolate;
    }

    private void FixedUpdate()
    {
        // ALWAYS use FixedUpdate for Rigidbody forces!
        if (Input.GetKey(KeyCode.Space))
        {
            // Use ForceMode.VelocityChange or Impulse to overcome mass reliably
            rb.AddForce(Vector3.up * 8f, ForceMode.VelocityChange);
        }
    }
}

Related Physics Guides