どうも、毎日一番会話しているのはSiri説。
コニーです
さてUnityでマップを作るときに何かと便利なのが配列
それを使ってすり抜ける壁とか作りたいな~
という方もいらっしゃると思います
そこで今回は!!
配列でレイヤーを変更する方法を解説します
レイヤーを変更することですり抜けるオブジェクトを作ったりできます
【Unity】配列でレイヤーを変更するコード
それではさっそく今回使うコードを見ていきましょう!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeLayer : MonoBehaviour
{
//配列を設定
string[,] Map = new string { { "L", "O" }, { "L", "L" } };
//オブジェクトの配列を設定
public GameObject[] Cubes = new GameObject;
void Update()
{
//配列の値で条件分岐させる
//配列の中身がLだったらレイヤーを変更
if(Map[0,0]=="L") Cubes[0].layer = LayerMask.NameToLayer("ChangedLayer");
if(Map[0,1]=="L") Cubes.layer = LayerMask.NameToLayer("ChangedLayer");
if(Map=="L") Cubes.layer = LayerMask.NameToLayer("ChangedLayer");
if(Map=="L") Cubes.layer = LayerMask.NameToLayer("ChangedLayer");
}
}
今回は配列によって複数のCubeのレイヤーを変更しています
このコードでは
- データ配列を設定
- オブジェクト配列を設定
- データ配列で条件わけしてオブジェクトのレイヤーを変更
という流れで作っています
配列でレイヤーを実際に変更してみる
先ほどのコードを実際に動かしている部分を見ていきましょう!
今回は次の画像のように4つのCubeのレイヤーを変更します
位置がわかりやすいように左上のCubeだけ赤色にしました
CreateEmptyから空のオブジェクトを作り、先ほどのコードをアタッチします
そのスクリプトのInspectorに各Cubeをスライドしていきます
左上がCube,右上がCube(1)
左下がCube(2),右上がCube(3)です
そして新しく”ChangedLayer”というレイヤーを作れば準備OK!!
あとは再生するだけで
配列で”L”と入力されているCubeのレイヤーが変更されます
実際にやってみた動画がこちら
変化前
変化後
動画が小さくて微妙ですが、しっかりとレイヤーがDefaultからChangedLayerに変更されていますね!
配列からレイヤーを変更するコードの応用
先ほど紹介したコードの応用範囲はめちゃめちゃ広いです
単純にGameObject配列を操作しているだけなので
色・マテリアル・タグなどもガンガン変更できます
なのでこのコードを足掛かりにしていろんな表現をしていってくださいね!
ではまた!!