ゲーム制作中にRigidBody2DのCenterOfMassが0になる問題が発生したのでメモを残しておく。
結論
ColliderのisTriggerが有効になっていると計算されない
isTriggerが有効だと…

Local Center of Massが(0,0)になっている。

isTriggerを無効にすると…

計算された値になる!!

そもそもCenter of Massって?
RigidBody2D.centerOfMassのスクリプトリファレンスによると以下の通り
ローカル空間でのリジッドボディの質量の重心
名前の通り、Mass(質量)の、Center(中心)。つまり重心。
じゃあこれってなにで決まるの?という話なんだが、2Dじゃない3D用のただのRigidBodyのcenterOfMassのスクリプトリファレンスにヒントがあった。
RigidBody.centerOfMassのスクリプトリファレンスの記述は以下の通り。
Transform の原点に対する質量の中心
ほほうほうほう。
つまり、Colliderをもとに重心が計算されているらしい。
それを知ると、Colliderの設定が重心の計算に影響を及ぼすのも納得できる。
今回は、isTriggerが直接の原因だったが、似たような問題でRigidBody.centerOfMassの記述は参考になりそう。
RigidBody2Dのほうもしっかり書いといてくれよ…。
今後2Dのコンポーネントでなにかあったら3Dのほうも読んでみるのは大事だなと思った。
参考
Rigidbody2D-centerOfMass - Unity スクリプトリファレンス
ローカル空間でのリジッドボディの質量の中心
Rigidbody-centerOfMass - Unity スクリプトリファレンス
Transform の原点に対する質量の中心