CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【unity】レイヤーについて!よくあるFAQ
こんにちは!コチラの記事ではUnityの「レイヤー」についての説明と、「レイヤー」についてよくあるFAQについて解説していきます。
レイヤーとは
Unity における「レイヤー」とは、 グループ分けをするようなイメージで、Game Object を任意のレイヤー(グループ)に設定にすることができる機能です。
レイヤーは最大で32個設定することができ、Game Object には、そのレイヤーのいずれかを割り当てることができます。
またレイヤーのうち、一部のレイヤーをマスキング(レイヤーを隠すようなイメージ)し、レイヤー毎に有効無効を設定できるのですが、その設定したデータを、まとめて「レイヤーマスク」と呼びます。
レイヤーの追加方法
レイヤーを追加するには、画面左上 Edit →「 Project Settings 」を開きます。
Project Settings のタブが開くので、「 Tags and Layers 」をクリックします。
Layers の中の、空の「 User Layer 」にあるテキストボックスに、新規レイヤーを追加することができます。
32個のレイヤーのうち「 User Layer 」ではない、「 Builtin Layer 」が5つありますが、これらのレイヤーは初めから Unity によって用意されているレイヤーで、変更・追加はできません。
新規追加したレイヤーは、Game Object の Inspector →「 Layer 」に表示されるようになり、 Game Object に割り当てることが可能になります。
レイヤーマスクの使い方
レイヤーマスク(レイヤー毎の有効無効の設定のデータ)は、以下のように使用することができます。
- 複数あるレイヤーのうち、一部のレイヤーのみに光を当てる。
- 複数あるレイヤーのうち、一部のレイヤーのみをカメラに写す。
- 複数あるレイヤーのうち、一部のレイヤーのみCollider を無視する。
レイヤーマスクの使用は、スクリプトによって設定する必要があります。
スクリプトに関して、「Unityの使い方|初心者からわかりやすく」というサイトの【Unity】レイヤーマスクを設定するという記事に分かり易くまとめられていましたので、是非参考にしてみてください。
レイヤーの変更方法
Game Object の Inspector →「 Layer 」で、レイヤーの変更が可能です。
ゲーム中にレイヤーを変更する場合には、スクリプトによって設定する必要があります。
スクリプトに関して、Unity公式のスクリプトリファレンスに記載されていましたので、是非参考にしてみてください。
レイヤーに関するFAQ
ここからは、レイヤーに関してよくあるFAQについて解説していきます。
レイヤーによる当たり判定の設定方法は?
レイヤーによる当たり判定の設定方法は、画面左上 Edit →「 Project Settings 」を開きます。
Project Settings のタブが開くので、「 Physics 」をクリックします。
Physics の1番下に表示される「 Layer Collision Matrix 」の表のチェックを外したり入れたりすることで、レイヤーによる当たり判定の設定をすることができます。
デフォルトでは、すべてにチェックが入っているので、すべてのレイヤー同士で当たり判定が起きるという設定になっています。
レイヤー同士の当たり判定をさせない場合は、表のクロスしている部分のチェックを外すとそのレイヤー同士では、当たり判定をしなくなります。
以下、自分で追加した「 Sample レイヤー」同士の当たり判定をしないようにチェックを外しました。
そうすることによって、Sampleレイヤーを割り当てたGame Object 同士(以下の動画内 Sphere と Cube )はぶつからなくなりますが、
それ以外のレイヤーが割り当てられたGame Object ( Plane )には当たり判定がそのまま有効となっています。
レイヤーの表示順・順序を変更するには?
レイヤーの表示順・順序を変更するには、「 Sorting Layers 」の設定をする必要があります。
「 Sorting Layers 」は、今まで説明してきたレイヤーとは全くの別モノであり、スプライト(2Dグラフィックオブジェクト)のレンダリングの順序を設定することができるシステムです。
「 Sorting Layers 」は、以下の方法で設定することができます。
スプライトのGame Object を選択し、Inspector → Sprite Renderer → Additional Settings → Sorting Layer → 「 Add Sorting Layers 」を開きます。
「 Tags and Layers 」が開くので、その中の「 Sorting Layers 」の右下にある「 + 」ボタンを押すことで、追加することができます。
また「 Sorting Layers 」のレイヤー名の変更もすることが可能です。
「 Sorting Layers 」の表の下にあるレイヤーほど、前面に表示されます。
またこのレッドとグリーンのスプライトが、同じ「 Sorting Layers 」に属している場合に、順序を変更したいときは、
Inspector → Sprite Renderer → Additional Settings →「 Order in Layer 」の数字を変更することで、順序を変更することが可能です。
同じ「 Sorting Layers 」に属している場合には、「 Order in Layer 」に入っている数字が大きい方が前面に表示されます。
2Dでレイヤーの順番を変更するには?
2Dでレイヤーの順番を変更する方法は、前項で説明した通りで、「 Sorting Layers 」の設定をすることによって変更できるので、ぜひ前項を参考に確認してみてください!
前項で説明した以外にも、画面左上 Edit → Project Settings →「 Tags and Layers 」から「 Sorting Layers 」の設定をすることも可能です。
まとめ
- レイヤーとは、 グループ分けをするようなイメージで、Game Object を任意のレイヤーに設定にすることができる機能である。
- レイヤーは、「 Tags and Layers 」から追加することができる。
- レイヤーマスクによって、複数あるレイヤーのうち、一部のレイヤーのみに光を当てたり、カメラに写したり、Collider を無視したりといったことをすることができる。
- Game Object の Inspector →「 Layer 」で、レイヤーの変更をすることができ、ゲーム中にレイヤーを変更するにはスクリプトが必要となる。
- 「 Layer Collision Matrix 」の表のチェックを外したり入れたりすることで、レイヤーによる当たり判定の設定をすることができる。
- 「 Sorting Layers 」によって、レイヤーの表示順の変更をすることができる。
- 2Dでレイヤーの順番を変更する場合、「 Sorting Layers 」によって、レイヤーの表示順の変更をすることができる。
Unity用アセット販売中!
当メディアで運営しているアセットショップ「NickNackHolic」にてUnity用のアセットを販売しております。
ゲーム制作やVRchat、Clusterなどで使用できる便利なアセットを販売しております。
一部無料のアセットもあるので、ぜひ覗いてみてください!
Nick Nack Holic
VRchatやゲームアセット、映像作品で使える「雑貨」を販売中