【Unity】Capsule Colliderのパラメータについて。向きも変えられるよ

【Unity】Capsule Colliderのパラメータについて。向きも変えられるよ

Capsule Colliderはその名の通り薬のカプセルのような形をしたColliderです。

Sphere Colliderのような球面部分と、円筒形のパーツで成り立っています。

Unityで3Dオブジェクトを作る際、CapsuleとCylinderを選択した場合にCapsule Colliderがついてきます。

 

環境

macOS 10.13 High Sierra

Unity2018.1.0f2

Colliderについて

Colliderって何? Colliderってどんな種類があるの? という疑問に答えようとしている記事はこちら。

ざっくり言うと、Unity世界で衝突を扱っているコンポーネントです。

これが無いと、すぃーっとオブジェクトを通り抜けたりします。

今回はその中でもCapsule Colliderを使って遊びます。

Capsule Collider
Capsule Collider

 

Capsule Colliderのパラメータ

カプセルの名の通り、薬のカプセルを表現したり、細長いポールを表現したりと、結構用途が広いように思います。

円筒形が使えると、複合Colliderとしてキャラクターを表現する際、腕や足を構成するのに便利です。

パラメータについては、Sphere Colliderに比べるといくらか設定項目が多いですね。

球体部分の半径を決める設定と、全体の高さを決める設定、カプセルの向きを決める設定などがあり、若干戸惑うこともあるかも。

Colliderのパラメータ
Colliderのパラメータ

 

IsTrigger

Is Triggerは、このColliderがトリガーかどうかを保持する設定です。trueでトリガーとして扱われ、falseで通常の衝突を行います。

このあたりはBox Collider、Sphere Colliderと共通です。

チェックが入っていると、オブジェクト同士の物理的な衝突はしないものの、Colliderが重なったこと自体は検知してくれます。

例えばぶつかって欲しくない中間のチェックポイントだったり、ステージからの落下を検知するためのColliderではIsTriggerをtrueにするといい感じ。

Material

物理特性マテリアルをセットすることができます。

物理特性マテリアルは、オブジェクトの摩擦力や反発係数を設定できるアセットのこと。

デフォルトだとボールなどを自由落下させた時にバウンドしないのですが、この物理特性マテリアルをColliderにセットしておくことでバウンドするようになります。

反発係数によっては、自由落下なのに元の位置より高くまで跳ね上がることもあります。

Sphere Colliderでは特にボール的な運動を表現するために反発係数をセットしておくのが大事です。

Center

このColliderの中心位置です。

Centerが(0, 0, 0)の場合は、TransformコンポーネントのPositionが中心となります。

例えばCenterを(0.5, 0, 0)にすると以下の画像のようにColliderがずれます。幻術系のボスで、別の位置に本体があるように見せる、などの特別な理由がない限りはあまり使わない方がいいかも。

半キャラずらし
半キャラずらし

 

Radius

球体部分の半径および円柱部分の半径を設定します。

球体部分だけを独立して操作することはできず、このRadiusが小さくなるとCapsule Collider自身が細くなっていきます。

また、Radiusが大きくなりすぎるとただの球体になります。Height < 2 * Radiusとなると円筒形の部分が消えて球体に。

Height

球体部分と円柱部分の両方を足した高さです。

対応関係を描いた模式図はUnityのマニュアルの『Capsule Collider』を見ていただくのが一番かも。

細長いColliderにするならHeightマシマシ、Radius低め。

ごんぶとのColliderにするならHeight低めのRadiusマシ。

この辺りは必要に応じて変えていくといい感じ。擬似的に楕円にするために敢えてごんぶとにしてもいいかもしれません。Sphere Colliderだと楕円が作れませんもんね。

Direction

Capsule Colliderの向きを変えることができる設定です。

デフォルトではオブジェクトの向きと同じくY軸方向に上下があります。Y軸に沿って円柱が伸びるイメージ。

Colliderの向きはX軸方向、Z軸方向に変更することが可能ですが、3D Objectから作成したCapsuleやCylinderなどのオブジェクトを使うときは変更しない方が無難です。

というのは、あくまでもCollider自体の向きを変えるのであって、オブジェクト自体の向きを変えるものではないからです。

オブジェクトはY軸方向に長いのに、ColliderはZ軸方向を向いています、なんていうメダパニ感が生まれてしまいます。

このようにデフォルトでは変える必要がありませんが、自分で3Dモデルを作成した時に、そのオブジェクトが横長あればColliderの向きを変える、とかなら必要になる設定です。

Edit Colliderの機能

パラメータの上の方に「Edit Collider」というボタンがあります。

これを使うと『Scene』ビューの中でColliderの大きさを変えることが出来ます。

Colliderの大きさを調整
Colliderの大きさを調整

 

ここで調整した大きさに応じて、Centerの値とRadiusの値が変更されます。

いじりすぎて訳が分からなくなったら、コンポーネントの右上にある歯車アイコンのメニューから[Reset]を選択すると吉。簡単に初期値に戻してくれます。これはTransformと共通して使える便利なテクニック。

まとめ

Capsule Colliderのパラメータについて簡単に紹介しました。

HeightとDirectionはBox Collider、Sphere Colliderと違う点です。

Box Collider、Sphere Collider、そしてこのCapsule ColliderはプリミティブなColliderなので、RigidbodyのCollision Detectionでもちゃんと衝突を検知してくれます。

なので複合Colliderとして使うといい感じ。

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!