強火で進め

このブログではプログラム関連の記事を中心に書いてます。

【Unity】 Collider 2D

動作検証環境

  • Unity 2022.2.0f1

Collider 2D について

Collider 2D は2Dオブジェクトに衝突(当たり)判定を導入したい時に使います。 以下の種類があります。

  • Circle Collider 2D
  • Box Collider 2D
  • Polygon Collider 2D
  • Edge Collider 2D
  • Capsule Collider 2D
  • Composite Collider 2D
  • Tilemap Collider 2D

Circle Collider 2D

docs.unity3d.com

円形の衝突範囲。

プロパティ名 説明
Material 物理特性を設定した Physics Material 2D を指定。
Is Trigger チェックされていない時は物理エンジンによる衝突が発生し、衝突時には OnCollisionXXX2D 系のコールバックが発生する。チェックされている時、物理エンジンによる衝突を起こさず、衝突時には OnTriggerXXX2D 系のコールバックを発生させる。
Used by Effector チェックされている場合には Effector を使用する。 Effector 2D 系のコンポーネントを付けておく必要が有る。
Offset 中心位置をずらしたい場合に数値を設定。
Radius 半径を設定。

Layer Overrides の項目についてはこちらの記事を参照。

■ Physics Material 2D

Box Collider 2D

docs.unity3d.com

四角形の衝突範囲。

プロパティ名 説明
Material 物理特性を設定した Physics Material 2D を指定。
Is Trigger チェックされていない時は物理エンジンによる衝突が行われ、衝突時には OnCollisionXXX2D 系のコールバックが発生する。チェックされている時、物理エンジンによる衝突を起こさず、衝突時には OnTriggerXXX2D 系のコールバックを発生させる。
Used by Effector チェックされている時、 Effector を使用する。 Game Object には Effector 2D 系のコンポーネントを付けておく必要が有る。
Used by Composite チェックされている時、 Composite Collider 2D での設定を適用。
Auto Tiling チェックされている時、 Sprite で 9-slicing の設定が行われていると Sprite のサイズ変更に衝突範囲が追随します。
Offset 中心位置をずらしたい場合に数値を設定。
Size サイズを指定。
Edge Radius 衝突範囲のエッジ部分に円状の範囲を追加する。

Layer Overrides の項目についてはこちらの記事を参照。

■ Used by Composite がチェックされている時

■ Used by Composite がチェックされていない時

■ Auto Tiling が無効の時は衝突範囲がリサイズに追随しない

※ Sprite のサイズを変更しても衝突範囲は常に同じサイズのままになっている事が確認できます。

■ Auto Tiling が有効の時は衝突範囲がリサイズに追随する

■ Edge Radius

Polygon Collider 2D

docs.unity3d.com

ポリゴン(ラインで囲まれた領域)の衝突範囲。

プロパティ名 説明
Edit Collider ボタンを押すと頂点編集モードに移行します。
Material 物理特性を設定した Physics Material 2D を指定。
Is Trigger チェックされていない時は物理エンジンによる衝突が行われ、衝突時には OnCollisionXXX2D 系のコールバックが発生する。チェックされている時、物理エンジンによる衝突を起こさず、衝突時には OnTriggerXXX2D 系のコールバックを発生させる。
Used by Effector チェックされている時、 Effector を使用する。 Game Object には Effector 2D 系のコンポーネントを付けておく必要が有る。
Used by Composite チェックされている時、 Composite Collider 2D での設定を適用。
Auto Tiling チェックされている時、 Sprite で 9-slicing の設定が行われていると Sprite のサイズ変更に衝突範囲が追随します。
Offset 中心位置をずらしたい場合に数値を設定。
Points ポリゴンの頂点情報

Layer Overrides の項目についてはこちらの記事を参照。

■ Edit Collider(頂点の編集)

ライン上でマウスカーソルを移動すると四角が表示されます。クリックすると四角の位置に頂点が追加されます。 Ctrl( Macの場合は Command )キーを押した状態でライン上にマウスカーソルを移動させると2つのラインが赤く表示されます。その状態でクリックすると中央の頂点が削除されます。

■ Points の例

Edge Collider 2D

docs.unity3d.com

1つラインや複数のラインによる衝突範囲。ポリゴンと異なり面積を持っていない。

プロパティ名 説明
Edit Collider ボタンを押すと頂点編集モードに移行します。
Material 物理特性を設定した Physics Material 2D を指定。
Is Trigger チェックされていない時は物理エンジンによる衝突が行われ、衝突時には OnCollisionXXX2D 系のコールバックが発生する。チェックされている時、物理エンジンによる衝突を起こさず、衝突時には OnTriggerXXX2D 系のコールバックを発生させる。
Used by Effector チェックされている時、 Effector を使用する。 Game Object には Effector 2D 系のコンポーネントを付けておく必要が有る。
Offset 中心位置をずらしたい場合に数値を設定。
Points ポリゴンの頂点情報
Edge Radius 衝突範囲のエッジ部分に円状の範囲を追加する。
Used by Composite チェックされている時、 Composite Collider 2D での設定を適用。
Auto Tiling チェックされている時、 Sprite で 9-slicing の設定が行われていると Sprite のサイズ変更に衝突範囲が追随します。
Offset 中心位置をずらしたい場合に数値を設定。
Points ポリゴンの頂点情報
Use Adjacent Start Point エッジの開始点での Adjacent を有効にする。
Adjacent Start Point エッジの開始点での Adjacent を設定。
Use Adjacent End Point エッジの終点での Adjacent を有効にする。
Adjacent End Point エッジの終点での Adjacent を設定。

Layer Overrides の項目についてはこちらの記事を参照。

■ Edit Collider(頂点の編集)

Ctrl( Macの場合は Command )キーを押した状態でライン上にマウスカーソルを移動させると1つライン、または2つのラインが赤く表示されます。1つのライン時にクリックするとそのラインが削除される形に頂点が削除されます。2つのラインの時にクリックすると中央の頂点が削除されます。

■ Adjacent

Use Adjacent Start Point にチェックを付け、 Adjacent Start Point を設定するとこの様に段差が有る時に乗り越える事が出来る地面を作れる様です。 ※公式の PhysicsExamples2D サンプルの EdgeCollider2D_AdjacentPoints のシーンより。

同じ条件で Use Adjacent Start Point のチェックを外した場合にはこの様になりました。

こちらの公式動画の3:30辺りから Adjacent についての解説が有ります(英語)。

www.youtube.com

Capsule Collider 2D

docs.unity3d.com

カプセル型の衝突範囲。

プロパティ名 説明
Edit Collider ボタンを押すと頂点編集モードに移行します。
Material 物理特性を設定した Physics Material 2D を指定。
Is Trigger チェックされていない時は物理エンジンによる衝突が行われ、衝突時には OnCollisionXXX2D 系のコールバックが発生する。チェックされている時、物理エンジンによる衝突を起こさず、衝突時には OnTriggerXXX2D 系のコールバックを発生させる。
Used by Effector チェックされている時、 Effector を使用する。 Game Object には Effector 2D 系のコンポーネントを付けておく必要が有る。
Offset 中心位置をずらしたい場合に数値を設定。
Size サイズを指定。
Direction カプセルの半円部分を垂直に付ける( Vertical )か水平に付ける( Horizontal )かを指定。

Layer Overrides の項目についてはこちらの記事を参照。

■ Direction を Vertical 、 Size を X=0.5, Y=1.0 に指定

■ Direction を Horizontal 、Size を X=1.0, Y=0.5 に指定

Composite Collider 2D

docs.unity3d.com

複数の Collider をまとめて制御。詳しくはこちらを参照。

Custom Collider 2D

docs.unity3d.com

自前で凝った形状を使いたい時に使用。 PhysicsShapeGroup2D で形状を作成し、設定する。