AddForce only seems to update position on X axis

When I use the Rigidbody.AddForce method, sometimes the position values only reflect changes to a single axis, such as the X axis. This happen regardless if I used ForceMode.Force or ForceMode.Acceleration. I can read the rigidbody velocity vector, and it seems to reflect the forces, but the position Y axis does not. Can anyone explain why this happens?

I know I’m 8 years late on this, but I came across this post because I ran into the same problem. There was a thread here which actually had a functional solution. You need to uncheck Apply Root Motion on the object’s Animator component. For some reason, this causes weird locking on some, but not all, axes even if there is no parent object in the hierarchy. Hopefully this helps any other lost souls who find themselves here years in the future.

It's difficult to guess what could be going wrong here without more information.

  • If gravity affecting the Rigidbody, and is your force strong enough to escape it?
  • Do you have any joints attached to the Rigidbody which could be restricting the movement?
  • Could you have some invisible colliders that your object could be colliding with?
  • Are there any scripts changing the position of your object as well, or in other ways?

In general, try to reproduce the issue in a new scene with a minimal setup. If you still get the issue when you have just a single object with a simple script on that applies force, the scene should be easy to share. If not, then you know that you need to hunt down what other thing is affecting the object.

AddForce but it only adds force in y, not in x. I tried various things and nothing seems to work is in Update() so its working, but as I said player “impulse” away only in the y axis.crediblebh be that the player is getting force added in the x axis, it’s just running into something, and Does it have any position constraints?