XNA向けBox2DをUnityに移植したFarseerUnityの使い方についてメモ
なお、これは本当に2Dゲーム甩物理演算なので、Z軸が完全に無視される。
下準備
1.AssetStoreからパッケージをインポート
2.適当なGameObjectを作成し、FSWorldComponentを付ける。これが重力制御に相当するので、1個あれば良い。
当たり判定の設定
箱型の当たり判定を設定する場合、適当にプリミティブなBoxを作成し、"FSBodyComponent"と"FSShapeComponent"をアタッチする。
次にFSBodyComponentのTypeを適切な値にする。Dinamicだと重力に引かれ、Kinematicだと落下しない。
最後にSTypeをpolygonに設定しする。円形の場合、この値をSTypeをCicleに設定する。
なお、UseUnityColiderにチェックが入っていると、Unityのコライダーから当たり判定のスケールを取得してくれるっぽい。(この時、コライダーのenableがfalseでも構わない)
複雑な当たり判定
複雑な当たり判定の形状はGameObjectの座標で設定する。これは各頂点の位置にGameObjectを配置する事で行う。次に"Polygon Point"にポイントを設定していく。
この時、ポイントはあまり複雑な形状にせず、3〜5頂点程度でまとめたものを複数持つのが良さそう。最後にUse Unity Colliderのチェックを外す。
なお、これもUnityのコライダー・フィジックスと同じように「親オブジェクトの持っているRigidBody設定に従う」模様。なので、複雑な形状を持つ場合、親オブジェクトにFSBodyComponent、子オブジェクトでFSSharpComponentを持つ構造のほうが良さそうだ。