どうも、いつの間にか12月でビビりまくってるコニーです
さて、この記事を読んでいる方はUnityでゲームを作ったりすることが多いと思います
ゲームを作るときに
「クリックしてオブジェクトの色を変えたい!!」
と思うことありますよね
今回はUnityで簡単にオブジェクトの色を変えるスクリプトをご紹介します
スポンサーリンク
【Unity】オブジェクトの色をクリックで変える方法
さっそくシンプルに
クリックでオブジェクトの色を変える方法を紹介します
今回は下の画像のような赤いCubeをクリックで青色に変えます
コードはこちら!!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeColor : MonoBehaviour
{
public Material MaterialA;
GameObject clickedGameObject;
void Update()
{
if(Input.GetMouseButtonDown(0))
{
clickedGameObject = null;
//Rayでクリックしたオブジェクトを取得
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit))
{
//clickedGameObjectがクリックされたオブジェクト
clickedGameObject = hit.collider.gameObject;
//マテリアルを変更
clickedGameObject.GetComponent<Renderer>().material = MaterialA;
}
}
}
}
このコードでは
- クリックしたときに動作するif文
- Rayでクリックしたオブジェクトを取得
- オブジェクトのマテリアルをMaterialAに変更
という動作をしています
①を忘れがちですが、これをしておかないとマウスカーソルを合わせただけで色が変化してしまいます
初心者の方はよくやりがちなので注意しましょう!!
これを実際に動かすと次のようになります
クリックしたときに
青色のMaterialAへ変更されましたね!
特定のオブジェクトだけ色を変更させる方法
次に
特定のオブジェクトだけ色を変更させる方法
を紹介します
下の画像のように立方体と球があります
これらをクリックした際、立方体だけ色を変えるようにします!!
この作業をすることで
・ほかのオブジェクトへの影響をなくす
・当たりはずれを設定できる
などのメリットがあります
実際のコードはこちら
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeColor : MonoBehaviour
{
public Material MaterialA;
GameObject clickedGameObject;
void Update()
{
if(Input.GetMouseButtonDown(0))
{
clickedGameObject = null;
//Rayでクリックしたオブジェクトを取得
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit))
{
//clickedGameObjectがクリックされたオブジェクト
clickedGameObject = hit.collider.gameObject;
//Tagで特定のオブジェクトのみ反応させる
if (clickedGameObject.gameObject.CompareTag("Cube"))
{
//マテリアルを変更
clickedGameObject.GetComponent<Renderer>().material = MaterialA;
}
}
}
}
}
先ほどのコードにif文で条件を指定してあげただけですね!
このコードでは立方体のみ”Cube”というタグをつけてあげることで、色を変えるかどうかを判別しています
スポンサーリンク
スポンサーリンク