Unity

【Unity】配列でオブジェクトのレイヤーを変更する方法!

どうも、毎日一番会話しているのは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のレイヤーを変更しています

このコードでは

  1. データ配列を設定
  2. オブジェクト配列を設定
  3. データ配列で条件わけしてオブジェクトのレイヤーを変更

という流れで作っています

配列でレイヤーを実際に変更してみる

先ほどのコードを実際に動かしている部分を見ていきましょう!

今回は次の画像のように4つのCubeのレイヤーを変更します

位置がわかりやすいように左上のCubeだけ赤色にしました

CreateEmptyから空のオブジェクトを作り、先ほどのコードをアタッチします

そのスクリプトのInspectorに各Cubeをスライドしていきます

左上がCube,右上がCube(1)

左下がCube(2),右上がCube(3)です

そして新しく”ChangedLayer”というレイヤーを作れば準備OK!!

あとは再生するだけで

配列で”L”と入力されているCubeのレイヤーが変更されます

実際にやってみた動画がこちら

 

変化前

 

変化後

 

動画が小さくて微妙ですが、しっかりとレイヤーがDefaultからChangedLayerに変更されていますね!

配列からレイヤーを変更するコードの応用

先ほど紹介したコードの応用範囲はめちゃめちゃ広いです

単純にGameObject配列を操作しているだけなので

色・マテリアル・タグなどもガンガン変更できます

 

なのでこのコードを足掛かりにしていろんな表現をしていってくださいね!

 

ではまた!!

 

unity changecolor
【Unity】オブジェクトの色をクリックで切り替えるやり方!!どうも、いつの間にか12月でビビりまくってるコニーです さて、この記事を読んでいる方はUnityでゲームを作ったりすること...