LoginSignup
13
8

More than 5 years have passed since last update.

さぁ、UnityのTilemapを始めよう! 7/8 ~TilemapとCollider編~

Last updated at Posted at 2018-12-02

さぁ、UnityのTilemapを始めよう!」シリーズ、全8回の内の第7回です。

今回は「TilemapとCollider編」と題して、アクションゲーム・プラットフォームゲームに欠かせないTilemapのColliderについて紹介します。

前回は、「第6回 Tileの描画編」です。

2つのColliderコンポーネント

Tilemapに関連するColliderのコンポーネントは次のふたつです。

  • UnityEngine.Tilemaps.TilemapCollider2D
  • UnityEngine.CompositeCollider2D

このふたつのコンポーネントをTilemapゲームオブジェクトに付与し、適切に設定します。

TilemapCollider2Dコンポーネント

1つ目はTilemapCollider2Dコンポーネントです。

Collider2Dクラスを継承したTilemapCollider2Dクラスは、その名のとおりTilemapのためのColliderコンポーネントクラスです。このクラスをTilemapゲームオブジェクトに付与すると次のようにTilemapの各セルにColliderが設定されます。

tilemap_collider.png

TilemapCollider2DのColliderは、TilemapのセルにTileが追加されたり、削除されたりすると更新されます。

CompositeCollider2Dコンポーネント

2つ目はCompositeCollider2Dコンポーネントです。

前節の画像は各セルにColliderが存在しました。この節では、次の図のようにCompositeCollider2Dを使って、各セルのColliderをまとめる方法を紹介します。

colliders.png

Collider2Dクラスを継承したCompositeCollider2Dクラスは、Colliderを連結させることができるクラスです。このコンポーネントは、Tilemap専用というわけではなく、幅広く利用できるコンポーネントです。

TilemapCollider2Dを付与したTilemapゲームオブジェクトに対して、CompositeCollider2Dコンポーネントを付与します。そして、TilemapCollider2Dの「Used By Composite」という設定項目をtrueにします。

used_by_compiste.png

このように設定すると@{chapter7/colliders}のように、各セルにあったColliderとそのエッジが集約されて、Tilemapの外周のみに設定されます。

TileのColliderの設定とSprirteのPhysics Shape

前の節でColliderをTilemapの外周のみに設定することができました。この節では、次の画像のようにSprite中の壁の位置にColliderのエッジを設定します。

tilemap_collider_with_sprite.png

まずはTileアセットの「Collider Type」を設定します。 TileアセットおよびTileData構造体には、「Collider Type」という項目・要素があります。これには、次の3種類があります。

  • None・・・Colliderを作成しません
  • Sprite・・・Spriteの「Physics Shape」を基にColliderの形状を決定します
  • Grid・・・セルの形を基にColliderの形状を決定します

今回は、Tileアセットの「Collider Type」を「Sprite」に設定します。

つぎにSprite Editorで各Spriteの「Physics Shape」を編集します。これでSprite中の壁の位置にColliderのエッジがくるように、Sprite Editorを使って「Physics Shape」を調整してください。やり方は次のリンクを参照してください。

以上の設定を行うことで、前の画像のようなColliderを設定することができます。

次回とシリーズ一覧

次回は、「第8回 関連リンクとまとめ編」です。

13
8
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
13
8