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 andAddForce()calls. - High Mass vs Weak Force: If mass is
1000 kgand force applied is only10N, 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);
}
}
}