Unityで2Dゲーム用の通路を作るとき、「Composite Collider 2D」を使うと楽に作れるということを覚えたのでメモしておきます。
次のような通路を作りたいとき、どうする?
Unityで次のような2Dゲーム用の通路を作るとします。
2Dゲームでは非常によくあるタイプの通路だと思いますが、どうやって作れば良いでしょうか?
すぐに思いつく方法:壁で囲って通路を作る
まず最初に思いつくのは「壁オブジェクトで囲うようにして通路を作る」方法です。まずBox Colliderをもつ壁オブジェクトを作り、それを下図のように配置していくやり方ですね。
ただしこの方法の問題点は通路を作るのが面倒くさいということ。上記の例くらい単純な通路ならまだマシですが、複雑な通路を作ろうとすると細かな壁オブジェクトを多数配置する必要があって非常に面倒です。
「Composite Collider 2D」を使ってもっと楽に通路を作る
そこでググって知ったのが「Composite Collider 2D」というコンポーネントを使う方法です。このコンポーネントについての詳細は「Composite Collider 2D – Unity マニュアル」のほうを参照してほしいのですが、簡単に言うと「コライダーを合成できるコンポーネント」です。
それでこのコンポーネントには「合成したコライダーを囲うようなコライダーを生成できる」という、通路を作るのにぴったりな機能があります。この機能を使えば通路をかなり楽に作ることができます。
作り方は簡単で、次のような手順で作ることができます。
- まず通路の親となる空のオブジェクトを用意する。これにComposite Collider 2Dをアタッチし(Rigidbody2Dも一緒にアタッチされる)、下の図のように設定する(エッジの半径は任意に調整すること)。
- 次に適当なコライダーを持つ通路用のオブジェクトを用意し、1.の子オブジェクトとして配置する。
- そうすると下の図のように子のコライダーを囲うようなコライダーが生成される。
これなら直接通路の形のコライダーを得られるので最初の方法よりもかなり楽です。ぜひ試してみてください。
参考ページ:【Unity】複数のColliderを結合するComposite Collider 2Dを使って少し遊ぶ – テラシュールブログ