Version: 2023.1
言語: 日本語
Customize a scriptable Brush's thumbnail
六角形タイルマップ

Tilemap Collider 2D

Tilemap Collider 2D コンポーネントは、同じゲームオブジェクトの Tilemap コンポーネント上の タイルコライダー 形状を生成します。Tilemap コンポーネント上のタイルを追加または削除すると、Tilemap Collider 2D によって、LateUpdate 中にコライダーの形状が更新されます。複数のタイル変更がまとめてバッチ処理されるので、パフォーマンスへの影響が最小限に抑えられます。

Tilemap Collider 2D プロパティ

Tilemap Collider 2D ウィンドウ
Tilemap Collider 2D ウィンドウ
プロパティ 機能
Max Tile Change Count コライダーの (インクリメンタルリビルドではなく) フルリビルドを行う前に蓄積するタイル変更 (タイルマップのタイルの追加/削除など) の最大数を設定します。

ノート: 蓄積された変更の数が多いと、Tilemap Collider 2D のインクリメンタルリビルドが、フルリビルドよりも遅くなることがあります。この問題を解決するには値を下げてください。
Extrusion Factor 各タイルのコライダー形状の押し出しの量を (Unity のワールド空間ユニットで) 設定します。これは、隣接タイルのコライダー形状間の隙間を最小限にし、Composite Collider 2D で設定された最小 Vertex Distance (頂点距離) の範囲内にどどめます。その上で Composite Collider 2D がタイルコライダーを合成することができます。

ノート: このプロパティは、デフォルトでは使用可能ではありません。使用可能にするには、Used by Composite の設定を有効にし、同じゲームオブジェクトに Composite Collider 2D をアタッチしてください。
Material 摩擦やバウンスなどの、衝突のプロパティを決定する Physics Material 2D を選択します。
Is Trigger この Collider 2D をトリガーとして動作させたい場合に有効にします。有効にした場合、物理演算システムはこのコライダーを無視します。
Used by Effector 有効にすると、アタッチされている Effector 2D が、この Collider 2D を使用します。
Used by Composite アタッチされている Composite Collider 2D でこのコライダーを使用するには、この設定を有効にしてください。

Used by Composite を有効にすると、Tilemap Collider 2D コンポーネントで Offset 以外の全てのプロパティが使用できなくなり、代わりに、アタッチされた Composite Collider 2D コンポーネントが Collider プロパティを制御するようになります。
Offset Collider 2D ジオメトリのローカルオフセット値を設定します。
Layer Overrides レイヤーのオーバーライド設定を展開します。
Layer Override Priority この Collider2D が、‘自身と他の Collision2D との接触が起こるべきかどうか’ について相反する決定が発生した場合の解決に使用する、決定の優先順位を割り当てます。詳細は API のページを参照してください。
Include Layers 他の Collider2D との接触が発生するかどうかを決定する際にこの Collider2D が含むべき、追加のレイヤーを選択します。詳細は API のドキュメントを参照してください。
Exclude Layers 他の Collider2D と接触するかどうかを決定する際にこの Collider2D が除外すべき、追加のレイヤーを選択します。詳細は API のドキュメントを参照してください。
Force Send Layers 他の Collider2D とのコリジョン接触中にこの Collider2D が力を送ることができるレイヤーを選択します。詳細は API のドキュメントを参照してください。
Force Receive Layers 他の Collider2D とのコリジョン接触中にこの Collider2D が力を受け取ることができるレイヤーを選択します。詳細は API のドキュメントを参照してください。
Contract Capture Layers この Collider2D と接触する他の Collider2D のレイヤーで、キャプチャされるものを選択します。詳細は API のドキュメントを参照してください。
Callback Layers この Collider2D が他の Collider2D との接触中に衝突を報告したりコールバックをトリガーするレイヤーを選択します。詳細は API のドキュメントを参照してください。

Collider Type’s effect on collider generation

タイルマップの各タイル用に生成されるコライダー形状は、タイルアセット で設定する Collider Type (コライダータイプ) によって異なります。このコンポーネントの形状生成動作とコライダータイプの関係は、以下のようになっています。

Collider Type 機能
圧縮なし Tilemap Collider 2D (2D タイルマップコライダー) コンポーネントは、このタイルのコライダー形状を生成しません。
スプライト Tilemap Collider 2D コンポーネントは、タイルに割り当てられたスプライトに基づいてコライダー形状を作成します。コライダー形状は、スプライトに設定された Custom Physics Shape に基づきます。
Grid Tilemap Collider 2D コンポーネントは、グリッドセルの形状に基づいたコライダー形状を作成します。グリッドセルは、Grid コンポーネントの Cell Layout で選択されたセルレイアウトによって決定されます。

タイルマップと合成コライダー

Tilemap Collider 2D コンポーネントは、Composite Collider 2D コンポーネントと一緒に使用できます。これら両方のコンポーネントを同じタイルマップに加えると、Unity は隣接するタイルのコライダー形状を融合させます。これにより、隣接するタイルのコライダー形状間の角やエッジ/辺が滑らかになります。

この 2 つのコンポーネントを併用することで、物理計算の更新に関わる個々のコライダー形状の数が減り、必要な計算量が減り、パフォーマンスへの影響を最小限に抑えることができます。

スクリプト API のヒント

コライダーを即座に変更する必要がある場合は、Tilemaps.TilemapCollider2D.ProcessTilemapChanges を使用して即時の処理を行ってください。Tilemaps.TilemapCollider2D-hasTilemapChanges を使用すると、何らかの処理が必要であるかどうか確認できます。

その他の参考資料


  • Unity 2020.1 で追加された新しいプロパティ
  • タイルマップは 2017.2 で追加NewIn20172

TilemapCollider2D

Customize a scriptable Brush's thumbnail
六角形タイルマップ