Unityではオブジェクト同士の当たり判定の範囲をコライダー(Collider)を使って実現しています。
もし、オブジェクトにコライダーが設定されていない場合(具体的にはColliderコンポ―ネットが追加されていない場合)、物体は当たり判定がなされずにすり抜けます。
コライダーが設定されていない場合
アセットストアで提供されているアセットには最初からコライダーなどがついている場合もありますが、中には自分でコライダーを設定して利用するものも多数存在します。
今回はあえてコライダーがついていない無料アセットLow Poly Fruit Pickupsを使って、オブジェクトにコライダーをつける方法を解説します。
プロジェクトの準備
プロジェクトを新規作成し、Hierarchyから + > 3D Object > Plane をシーンに追加してください。
アセットストアから Low Poly Fruit Pickups を検索してプロジェクトにインポートします。
インポートするとLow Poly Fruitsという名称のフォルダが作成されます。
Low Poly FruitsフォルダにあるPrefabsフォルダを開いて好きなフルーツをシーン上にドラッグ&ドロップしてください。
シーンの準備は以上です。
コライダーがないとすり抜ける
試しにシーンに配置したフルーツにRigidbodyを追加して落下させてみます。
フルーツを選択し、InspectorウインドウのAdd Componentボタンをクリック。
Physics > Rigidbody を追加します。
一度実行確認してみます。
うまくPlaneをすり抜けたでしょうか?(笑)
これはフルーツにColliderが設定されていないからです。
ちなみにデフォルトのオブジェクトである 3D Object の Cubeは最初からColliderが設定されているので同じようにRigidbodyを追加すればきちんとPlaneにぶつかって止まります。
CubeのInspectorウインドウを見てみるとBox Colliderという名称のコライダーが設定されていることが分かります。
コライダーを設定する
今回シーンに配置したフルーツにもColliderを設定して落下させたときPlaneで止まるようにします。
具体的には、Rigidbodyの時と同じように、コライダー用のコンポーネントを追加する形になります。
まずはフルーツを選択してAdd Componentボタンをクリック。
Physics > Sphere Collider を追加します。
Sphere Colliderが追加され、オブジェクトの周囲に緑色の枠線が表示されています。
この緑色の枠線が当たり判定の範囲となるコライダーの範囲です。
この状態で実行すると、Planeで落下が止まることが確認できます。
コライダーの範囲調整
今回は、フルーツとコライダーの範囲がほぼ一致していたので問題はありませんでしたが、コライダー範囲は微調整が可能です。
調整には2通りの方法があります。
マウス操作でコライダー範囲を微調整
エディットボタンをクリックすると、マウス操作で緑色の枠線をドラッグ&ドロップ操作により直感的にコライダー範囲を調整できます。
調整イメージ
数値入力によりコライダー範囲を微調整
Center項目とRadius項目に数値を入力することでもコライダー範囲を調整できます。
より細かい調整を行いたい場合は、こちらが適しています。
CenterのX, Y, Zは、コライダーの中心座標です。
Radiusは半径です。コライダーを追加したオブジェクトにより初期値は変わってきます。
調整イメージ
コライダーの範囲を元に戻したい時は?
コライダーの範囲を最初の状態に戻したくなる時もあります。
その際は、Inspectorウインドウのコライダー部分の右上をクリックして、Resetを選択すれば元に戻ります。
コライダーの種類
実はコライダーには、今回紹介したSphere Colliderのほかに、Box Collider、Capsule Colliderなどがあります。(3Dの場合)
ちなみに3D ObjectのCubeに最初から設定されていたのは、Box Colliderでした。
オブジェクトの形状に合わせてコライダーの形状を選ぶようにすればいいでしょう。
実はMesh Colliderというオブジェクトの形状に沿ったコライダーも存在します。
ただしMesh Colliderは、ゲームの処理が重くなるため、使いどころは考える必要があります。
大抵はSphere ColliderやBox Collider、3DキャラならCapsule Colliderで十分間に合います。
以上、Unity:当たり判定範囲コライダーのつけ方でした。
参考
コメント