他のオブジェクトのカラーを取得して、もう一方のオブジェクトに同じカラーを付けてみましょう。
Cubeをクリックして、マテリアルを変数として取得。
もう一つのCubeをクリックすれば、同じマテリアルを付けることができます。
この方法には、他のオブジェクトの変数を取得できるように、スクリプトを作成します。
関連記事:
他のスクリプトの変数を取得する
他のスクリプトの関数を実行する方法
他のオブジェクトの回転を変数として取得
ゆっくり元のカラーに戻す
Resources.Loadを使ったファイル指定
ぶつかったオブジェクトと同じカラーにする
複数のマテリアルをスクリプトで切り替え
色を吸い取る
Cubeを2つ作成し、並べて配置し、名前をそれぞれCube1、Cube2にします。
CubeMaterialというマテリアルを作成し、Cube1に追加します。
GetColor.csを作成し、Cube1に追加します。
GetColor.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GetColor : MonoBehaviour { public Material Cube1Color; void OnMouseDown() { Cube1Color = GetComponent<Renderer>().material; } } |
ゲームプレイして、黄色のCubeをクリックしましょう。
CubeColor1のフィールドに、CubeMaterialのマテリアルが確認できます。
吸い取った色をつける
Cube1の黄色のマテリアルを、Cube2にも付けられるようにしていきましょう。
PutColor.csを作成し、Cube2に追加します。
PutColor.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PutColor : MonoBehaviour { GameObject cube1; GetColor getColor; void Start() { cube1 = GameObject.Find ("Cube1"); getColor = cube1.GetComponent<GetColor>(); } void OnMouseDown() { GetComponent<Renderer>().material = getColor.Cube1Color; } } |
Cube1にあるマテリアル、Cube1Color変数を取得するしくみです。
変数getColorに、GetColor.csを格納。
「getColor.Cube1Color」という形で、Cube1側のマテリアルの変数を取得しています。
ゲームプレイしてみましょう。
黄色のCubeをクリックしてマテリアルを取得。
白色のCubeをクリックすれば、黄色のマテリアルで色がつきます。
関連記事:
他のスクリプトの変数を取得する
他のスクリプトの関数を実行する方法
他のオブジェクトの回転を変数として取得
ゆっくり元のカラーに戻す
Resources.Loadを使ったファイル指定
ぶつかったオブジェクトと同じカラーにする
複数のマテリアルをスクリプトで切り替え