# Understanding Unity3d physics: where is the force applied?

I'm trying to understand which is the right way to apply forces to a `RigidBody`.

I noticed that there are `AddForce` and `AddRelativeForce` methods, one applied in world space coordinate system meanwhile the other in the local space. The thing that I do not understand is the following: usually in physics library (es. Bullet) we can specify the force vector and also the force application point.

How can I do this in Unity? Is it possible to apply a force vector in a specific point relative to the given RigidBody coordinate system? Where does AddForce apply the force?

-
Any force on a rigid body can also be represented as a force at center of mass plus a torque. I would hope there is a convenience method not to have to calculate that yourself, though. – Kevin Reid Sep 12 '12 at 16:05
@Kevin Reid: do you have any reference where is explained how can I perform this calculus? – Heisenbug Sep 12 '12 at 16:16

The documentation isn't terribly clear on it—and I'm not currently in a position to verify it—but I believe that the force applied from `RigidBody.AddForce()` (link) is applied at that object's root location (at its `transform.position`). If not at `transform.position`, then at the object's `RigidBody.centerOfMass` (link).
If you want to apply a force vector at a specific point, you probably want to use `RigidBody.AddForceAtPosition()` (link). Similarly, there is `RigidBody.AddRelativeForce()` (link) if you just want it local to the object itself.
And, for even more control if you know the torque you want to apply, there are `RigidBody.AddTorque()` (link) and `RigidBody.AddRelativeTorque()` (link).