Should I use rigidbody.velocity or rigidbody.AddForce() for movements?

Which is better for movements?

It depends on what control type you want.

If you want snappy controls then you can use Velocity. You’ll get your target movement immediately and can even apply an “instant stop” for even snappier controls.

If you want smooth controls with drag and acceleration/deceleration then addForce. Especially if you have a physics heavy game that involves a lot of flying objects like Portal and Portal 2.

Just make sure you used FixedUpdate() and fixedDeltaTime when working with physics.

Both rigidbody.velocity and rigidbody.AddForce() can be used for moving a Rigidbody in Unity, but they have different use cases.


rigidbody.velocity sets the velocity of the Rigidbody directly, meaning it will move at a constant speed in the given direction until acted upon by another force. This is useful for simple movements like sliding or bouncing, where the object will move at a fixed speed until it hits something.


rigidbody.AddForce() applies a force to the Rigidbody, causing it to accelerate in the given direction. This allows for more complex movements and interactions with other objects, as the Rigidbody will respond to other forces in the environment. You can also apply a force over a period of time using rigidbody.AddForce() and change the direction and magnitude of the force during the movement.


So which one to use depends on what kind of movement you want to achieve. If you want a simple, fixed-speed movement, rigidbody.velocity may be sufficient. If you want more complex movement with forces involved, then rigidbody.AddForce() would be a better choice.