MainCameraの撮影できるレイヤーを、カリングマスクで複数選択して、切り替えてみましょう。
左クリックすれば、キューブとカプセル表示され、右クリックすれば、スフィアとシリンダーが表示されます。
クリック操作によって、CullingMaskの対象を、スクリプトから変更できるようにしています。
所属するレイヤーごとに、MainCameraでの表示、非表示を切り分けることができます。
関連記事:
レイヤーによるMainCameraの非表示
同じタグのついたオブジェクトだけを消す
カリングマスクでレイヤーを順に追加
レイヤーの順序をスクリプトから変える
CullingMaskで2つ以上のレイヤーを指定
GameObject(空のオブジェクト)、Cube、Sphere、Capsule、Cylinderを作成します。
4つのオブジェクトを適当なところに配置します。
ゲームビューではこのように見えています。
レイヤー8~11に、以下の名前で作成します。
(後からレイヤー名を変更したいときは、「レイヤーを追加」からいつでも変更可能です。)
それぞれのオブジェクトに、違うレイヤーを設定します。
LayerChange.csを作成し、GameObjectに追加しましょう。
LayerChange.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class LayerChange : MonoBehaviour { [SerializeField] Camera cam; void Start() { cam.cullingMask = 1 << 0; } void Update() { if (Input.GetMouseButtonDown(0)) { cam.cullingMask = (1 << 8) + (1 << 10) ; } if (Input.GetMouseButtonDown(1)) { cam.cullingMask = (1 << 9) + (1 << 11) ; } } } |
Camのフィールドに、MainCameraを入れます。
ゲームプレイしてみましょう。
左クリックを押すと、レイヤー8番と10番だけが表示。
右クリックを押すと、レイヤー9番と11番だけが表示されます。
MainCameraのカリングマスクを見てみると、クリックのたびに、レイヤーの選択が切り替わっているのが確認できます。
カリングマスクの複数指定は、以下のようにコードを書きます。
cam.cullingMask = (1 << x) + (1 << y) ;
xとyはレイヤ番号を入れ、+で繋げます。
関連記事:
レイヤーによるMainCameraの非表示
同じタグのついたオブジェクトだけを消す
カリングマスクでレイヤーを順に追加
レイヤーの順序をスクリプトから変える