How in unity to implement RotateAround through a Rigidbody?

If your rigidbody is kinematic, you can use MovePosition and MoveRotation. You can add RotateAround to the Rigidbody class pretty easily, but remember to call it on FixedUpdate

```
public static class ExtensionMethods
{
public static void RotateAround(this Rigidbody rb, Vector3 point, Vector3 axis, float angle)
{
Quaternion rotation = Quaternion.AngleAxis(angle, axis);
Vector3 deltaPos = rb.position - point;
rb.MoveRotation(rotation * rb.rotation);
rb.MovePosition(point + rotation * deltaPos);
}
}
```

As you can see, you calculate the rotation quaternion, and apply it to both the rotation, and the vector from point to the rigidbody.

For a non-kinematic rigidbody, this is more complicated, as you have to calculate both the velocity and angular velocity. Comment on this question if you need code for that.