LoginSignup
5
5

More than 5 years have passed since last update.

Unityコライダーまとめ

Last updated at Posted at 2017-12-09

Unityのコライダーまわりについて少しまとめました

主なコライダーの種類

Static Collider(静的コライダー)

コンポーネント

TriggerがオフのColliderのみ.Rigidbodyはつけない.

仕様

動かしてはならない.Unityは動かすことをサポートしていない.
他のRigidbodyオブジェクトと衝突するが,自身は動かない.

主な用途

床,壁など動かないオブジェクト.

(非Kinematic) Rigidbody Collider

コンポーネント

  • TriggerがオフのCollider
  • KinematicがオフのRigidbody

仕様

物理演算が行われ,ほかのRigidbodyオブジェクトや静的コライダーと衝突することができる.移動は衝突や力によって動かす.transformの変更で動かしてはならない

主な用途

物理演算によって動かすオブジェクト.

Kinematic Rigidbody Collider

コンポーネント

  • TriggerがオフのCollider
  • KinematicがオンのRigidbody

仕様

物理エンジンによる制御を受けない.よって,ほかのRigidbodyオブジェクトと衝突することができるが,自身はそのはね返りによる衝突後の回転や移動の影響を受けない.移動はtransformの変更で動かしてよい
IsKinematicをオンにすれば即座に物理挙動ができるため,爆発等で吹き飛ばされるキャラクターの手足にもデフォルトで用いられる.ただし,IsKinematicの切り替えはパフォーマンスコストがかかるため頻繁に行ってはならない.
また,他の静的コライダー,Kinematic Rigidbody Colliderとは衝突しないことに注意.

主な用途

スライドドアのように基本静的コライダーとして振る舞い,時々動かすものに用いる.

IsTrigger

IsTriggerがオンになっていると,物理エンジンから無視されて衝突はできず,衝突の検出のみがOnTrigger~()でできる.

IsKinematic

IsKinematicがオンになっていると,物理エンジンによる制御を受けない.

衝突アクションマトリクス

Unityマニュアルには衝突の検出が行われるかどうかの組み合わせ表がある.つまり,OnCollision~(),OnTrigger~()のコールバック関数が呼ばれるかどうかの表がそれぞれ存在する.
衝突アクションマトリクス(下のほう)

CharacterController

仕様

CharacterControllerを使った場合はColliderやRigidbodyは用いない.よってRigidbodyは呼ばれず,現実的な力による制御はされず,衝突のみができる.移動はCharacterController.Move()やSimpleMove()で行う.
衝突のコールバック関数はOnControllerColliderHit()であることに注意.

主な用途

非現実的な挙動をするキャラクター等

参考

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5