【Unity】 Composite Collider 2D
動作検証環境
- Unity 2022.2.0f1
はじめに
Composite Collider 2D は複数の Collider 2D を一括で制御する事ができるコンポーネントです。 使用可能な Collider 2D は Box Collider 2D と Polygon Collider 2D だけです。
プロパティ
プロパティ名 | 説明 |
---|---|
Density | 密度の設定。 Rigidbody 2D の Use Auto Mass がチェックされている場合にのみ表示される。 |
Material | 物理特性を設定した Physics Material 2D を指定。 |
Is Trigger | チェックされていない時は物理エンジンによる衝突が発生し、衝突時には OnCollisionXXX2D 系のコールバックが発生する。チェックされている時、物理エンジンによる衝突を起こさず、衝突時には OnTriggerXXX2D 系のコールバックを発生させる。 |
Used by Effector | チェックされている場合には Effector を使用する。 Effector 2D 系のコンポーネントを付けておく必要が有る。 |
Offset | 中心位置をずらしたい場合に数値を設定。 |
Geometry Type | Outlines 、Polygons が選択可能。 Outlines を選択した場合には Composite Collider 2D 同士は衝突しませんが Polygons の場合には衝突が発生します。 |
Generation Type | 構成されている Collider に変更された時に新しいジオメトリを作成するタイミングを指定。 Synchronous の場合には即座に行われ、Manual の場合は CompositeCollider2D.GenerateGeometry API を実行したタイミング、または Inspector の Regenerate Collider ボタンを押したタイミングで行われる。 |
Vertex Distance | この数値より近い頂点はすべて削除されます。数値が大きくなるほど見た目に比べて省略された Collider となる。 |
Offset Distance | この距離値内の頂点は結合されます。 |
Edge Radius | Collider のエッジ部分の太さを半径で指定します。Geometry Type で Outlines が選択されている時の表示される。 |
Layer Overrides の項目についてはこちらの記事を参照。
解説
Vertex Distance
この様なスプライトの場合で検証してみます。
■ Vertex Distance = 0.0005 の時
■ Vertex Distance = 0.26 の時
数字が大きい方が簡略化された Collider になっている事が確認できます。
Offset Distance
■ Offset Distance = 5e-05 の時
■ Offset Distance = 0.3 の時
数字が大きい方が頂点が統合された Collider になっている事が確認できます。
Edge Radius
■ Edge Radius = 0.15 の時
Physics2D.OverlapPoint で判定されるのはこのエッジの部分だけです。内部の座標で Physics2D.OverlapPoint を実行した場合には Collider が返される事は有りません。
使い方
Composite Collider 2D を付けた GameObject の下に使用したい Collider という階層構造にします。
なお、 Composite Collider 2D を付けた GameObject には Rigidbody 2D も付けておく必要が有ります。
Box Collider 2D や Polygon Collider 2D で Used By Composite にチェックを付けると Composite Collider 2D で管理されようになります。
Composite Collider 2D を付けた GameObject を選択すると現在の衝突範囲が視覚化されます。
これを参考にしながら自分のゲームで許容できる正確さと負荷のバランスを取りながら、値の調整を行います。