# 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).