【Unity】Box Colliderのパラメータの紹介と、衝突を使った遊び
Colliderにも様々な種類があって、3Dだけでも6種類のColliderが用意されています。
今回はBox Colliderのパラメータを紹介しつつ、このColliderを使って遊んでみたいと思います。
環境
macOS 10.13 High Sierra
Unity2018.1.0f2
Colliderについて
Colliderって何? Colliderってどんな種類があるの? という疑問に答えようとしている記事はこちら。
ざっくり言うと、Unity世界で衝突を扱っているコンポーネントです。
これが無いと、すぃーっとオブジェクトを通り抜けたりします。
今回はその中でも基本的なBox Colliderを使って遊びます。
Box Colliderのパラメータ
Box Colliderは箱型のColliderで、テレビやタンス、ドア、冷蔵庫など、様々なオブジェクトのColliderとして適しています。
UnityでCubeオブジェクトを作った時にも、デフォルトでこのColliderが付いてくるので、多分みんながよく目にするコンポーネントです。
このコンポーネントのパラメータは以下の画像のようになっています。
Rigidbodyに比べると比較的パラメータの数も少ないので覚えやすいと思います。
それぞれについて簡単にご紹介。
Is Trigger
Is Triggerは、このColliderがトリガーかどうかを保持する設定です。trueでトリガーとして扱われ、falseで通常の衝突を行います。
Colliderをトリガーとして使う場合は、通常の物理的な衝突は行わず、このColliderが別のColliderと接触したことを検知します。
衝突はさせたくないけど、このオブジェクトと接触したことは知りたい、みたいな時に使います。例えばアクションゲームの復活ポイントだったり、落下検知のオブジェクトなどがそうですね。
接触を検知したことは、スクリプトからOnTriggerEnterなどの「OnTrigger」系メソッドで拾うことができます。
拾えるメッセージはスクリプトリファレンスに記載されています。
なお、このフラグがfalseの時はOnCollisionEnterなどの「OnCollision」系メソッドでメッセージを拾います。
「あれ? Collider付いてるのに衝突しないよ?」
って時にはこのIs Triggerがtureになっていることが原因だったりするので要確認です。初心者の頃は何度もやらかしました。
Material
物理特性マテリアルをセットすることができます。
物理特性マテリアルは、オブジェクトの摩擦力や反発係数を設定できるアセットのこと。
デフォルトだとボールなどを自由落下させた時にバウンドしないのですが、この物理特性マテリアルをColliderにセットしておくことでバウンドするようになります。
物体同士の衝突でも反発係数を使えるので、ぶっ飛び感を演出したいときに便利。
Center
このColliderの中心位置です。
Centerが(0, 0, 0)の場合は、TransformコンポーネントのPositionが中心となります。
Collider側で衝突する領域をずらせるので、オブジェクトのメッシュが表示されていない部分にもColliderを置くことが出来ます。
例えば、画面上で見えている姿と当たり判定が異なるボスとかが作れそう。
Size
Colliderの大きさを変えられます。
通常、TransformのScaleの値に応じてColliderも大きさを変えますが、メッシュの大きさを変えずにColliderの大きさを変えたい時に使えます。
若干大き目に当たり判定を使いたい! なんて時にいじるといいかも。
Edit Colliderの機能
パラメータの上の方に「Edit Collider」なるボタンがあります。
これを使うと、『Scene』ビューの中でColliderの大きさを変えることが出来ます。
各面の中心に小さな黒丸が表示されるので、それをドラッグ&ドロップすることで大きさを決めます。
操作によって変わった大きさは、CenterとSizeに反映されます。
BoxColliderで遊ぶ
とは言ったものの、何して遊びましょ?
やっぱりぶっ飛び感のある遊びかな。
RigidbodyとBox ColliderをアタッチしてあるCubeをいっぱい積み上げて、そこにボールをぶつけてみましょ。
派手にぶっ飛びました。Colliderがあるからこその動きですね。直接ボールがぶつかったところだけではなく、他のColliderにも力が伝播しています。
上記のCubeたちはPrefabをインスタンス化しているのですが、何となくColliderのサイズを大きくしてみたくなりました。
配置する位置はCubeのメッシュに合わせており、Colliderはそれより大きい状態です。つまりCollider同士が重なった状態でゲームを実行してみます。
見事に弾け飛びました。Collider同士が重なっていると、重ならない位置に動こうとします。それがインスタンス化されたCubeみんなでやるもんだから、結果として弾け飛ぶことに。
飛び散る様子がフレイザードの氷炎爆花散みたいだったので、インスタンス化する時に氷っぽいマテリアルと炎っぽいマテリアルをランダムにセットしてみました。
まとめ
Box Colliderのパラメータ紹介と、このColliderを使った遊びをお送りしました。
パラメータに関しては設定項目も少ないので分かりやすくていい感じ。
Collider同士の距離が近くなると排斥しようとする力を使って氷炎爆花散ごっこも出来たので満足です。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】動かないオブジェクトはStaticにして光をBakeさせる 2018.05.22
-
次の記事
【Unity】重なっているColliderの斥力を観測する実験 2018.05.24
コメントを書く