Rigidbody.AddForceAtPosition does not work quite realistically

Hi,

I was doing some physics stuff with Unity and noticed there is something off with AddForceAtPosition. It does both AddForce and AddTorque as it should but the problem is in how much of each it does. If you apply force of let’s say 10 newtons with AddForceAtPosition to any point and direction of a Rigidbody it does two things: 1) It applies 10 newton force to the mass center of the object just like AddForce would do AND 2) It applies torque just like AddTorque using the 10 newton value (multiplied by perpendicular distance of the mass center from the line along which the force direction vector goes) would do.

So basically it applies the given 10 newton force twice where other one is converted into motion and other into rotation. This is not realistic and it can cause some strange behavior. I would guess in reality the given force should distribute and convert into motion and rotation according to some formula which takes into account the rigidbody’s mass and inertia but I have not found a solution to this yet. I made this demonstration scene to show this in action.

1 Like

Surprisingly, it turns out that the behavior you observe is actually correct and realistic. See:

Head to page G28, 5.5 Force vs. Torque Puzzle

Click the spoiler below for reading this chapter of the article. The figures explain the case very well.

5.5 Force vs. Torque Puzle (screenshots)

2 Likes

Thank you for your reply and those links. I have to chew this info a little bit but if this is actually realistic behavior it sure is counterintuitive.