テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

2D物理エンジン、FarseerUnityの使い方

XNA向けBox2DをUnityに移植したFarseerUnityの使い方についてメモ
なお、これは本当に2Dゲーム甩物理演算なので、Z軸が完全に無視される。

関連
tsubakit1.hateblo.jp


下準備

1.AssetStoreからパッケージをインポート

2.適当なGameObjectを作成し、FSWorldComponentを付ける。これが重力制御に相当するので、1個あれば良い。


当たり判定の設定

箱型の当たり判定を設定する場合、適当にプリミティブなBoxを作成し、"FSBodyComponent"と"FSShapeComponent"をアタッチする。

次にFSBodyComponentのTypeを適切な値にする。Dinamicだと重力に引かれ、Kinematicだと落下しない。

最後にSTypeをpolygonに設定しする。円形の場合、この値をSTypeをCicleに設定する。
なお、UseUnityColiderにチェックが入っていると、Unityのコライダーから当たり判定のスケールを取得してくれるっぽい。(この時、コライダーのenableがfalseでも構わない)

スクリーンショット 2013-05-06 23.47.08


複雑な当たり判定

複雑な当たり判定の形状はGameObjectの座標で設定する。これは各頂点の位置にGameObjectを配置する事で行う。次に"Polygon Point"にポイントを設定していく。

スクリーンショット 2013-05-06 23.59.48

この時、ポイントはあまり複雑な形状にせず、3〜5頂点程度でまとめたものを複数持つのが良さそう。最後にUse Unity Colliderのチェックを外す。

スクリーンショット 2013-05-06 23.53.34

なお、これもUnityのコライダー・フィジックスと同じように「親オブジェクトの持っているRigidBody設定に従う」模様。なので、複雑な形状を持つ場合、親オブジェクトにFSBodyComponent、子オブジェクトでFSSharpComponentを持つ構造のほうが良さそうだ。

スクリーンショット 2013-05-07 0.06.23