Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

さぁ、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」を調整してください。やり方は次のリンクを参照してください。

https://docs.unity3d.com/Manual/SpriteOutlineEditor.html

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

次回とシリーズ一覧

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away