【Unity】Rigidbodyを持たないオブジェクト同士の当たり判定について

Unityの当たり判定に関してちょっと躓いた点があったので備忘録として書いていきます。

 

2Dの縦スクロールゲームを作っていて何故か、

 

・障害物となるキューブオブジェクト

・Rigidbodyを使用せずTransformを直接いじって移動させてる球オブジェクト

 

この2つの衝突判定が行われずに悩んでおりました。

 

結論から言うと、両方ともRigidbodyコンポーネントが設定されていない事が問題でした。

f:id:White_Fool:20180808212900p:plain

↑プレイヤーとなる球オブジェクト、スクリプト内にてTransformの更新を行って移動を行っています。

 

f:id:White_Fool:20180808213125p:plain

↑障害物となるキューブオブジェクト

 

どうやらColliderコンポーネントが追加されているが、Rigidbodyは追加されていない場合はStatic Colliderという扱いになるらしい。

その性質というものがStatic Collider同士のオブジェクトは衝突判定を行わないとのこと、まぁStatic Colliderは一般的に絶対に動かないステージマップなんかが該当するものらしく、移動するプレイヤーがこれになっていたらそりゃおかしいよなと。

 

片側にRigidBodyがついていればStatic ColliderとRigidbody Colliderの関係になって問題ないとの事なので、プレイヤーの球オブジェクトにRigidBodyを追加することで無事当たり判定が取れました。

 

docs.unity3d.com

公式マニュアルにもばっちりStatic Colliderを移動させるなってかいてありました。

別に物理エンジンでの挙動使わないしいらないよな?ぐらいの気持ちだったんですが、こういうところで関係してくるとは......って感じです。

 

まだまだ分からない事が多いなぁ!!