Unityでのゲーム開発において、オブジェクトのEmissionを制御することは、ゲームのビジュアルを豊かにする重要な要素です。この記事では、キーボード入力を使ってオブジェクトのEmissionを制御し、光の強さや色を変更する方法を詳しく解説します。
UnityのEmissionとは
Emissionは、Unityにおいてオブジェクトが発光する機能を指します。これにより、オブジェクトは周囲の環境光に依存せず、独自の光を放つことができます。特に暗いシーンや特定のエフェクトを表現する際に有効です。
シーンとオブジェクトの準備
シーン内にオブジェクト(例えば、キューブ)を追加します。オブジェクトは、Hierarchyウィンドウで右クリックし、「3D Object」→「Cube」を選択して作成できます。また、オブジェクトが発光していることがわかりやすいように、今回はCubeを組み合わせて箱のようなものを作成していきます。(※発光している様子が見やすいために作成するだけです。)
マテリアルの作成
「Assets」ウィンドウで右クリックし、「Create」 > 「Material」を選択して作成します。作成した新しいマテリアルに名前を付けます(例: “EmissiveMaterial”)。
Emissionの有効化と設定
作成したマテリアルを選択し、インスペクターウィンドウで「Emission」をチェックします。「Emission」のチェックボックスのすぐ下にある「Color」をクリックして、発光色を選択します。
(※ここで選んだ発光色は、シーンを再生したら後述するスクリプトの内容で上書きされるので、ほとんど意味がないように感じますが、僕の場合、ここで発光色の選択をしないと最終的にシーンを再生した時、オブジェクトの色が変わらないことがありました。理由は不明です。)
作成したマテリアルを、Emissionを変更したいオブジェクト(光らせたいオブジェクト)にドラッグ&ドロップします。
スクリプトの作成
「Assets」ウィンドウで右クリックし、「Create」 > 「C# Script」を選択し、スクリプトに名前を付けます(例: “EmissionController”)。
スクリプトの編集
以下のスクリプトを使用して、キーボード入力によりEmissionの色と強さを変更します。
using UnityEngine;
public class EmissionController : MonoBehaviour
{
public Material emissiveMaterial;
public Color activeColor = Color.red;
public float intensity = 1.0f;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
// スペースキーを押している間、赤色に発光
emissiveMaterial.SetColor("_EmissionColor", activeColor * intensity);
}
else
{
// スペースキーを離すと発光しない
emissiveMaterial.SetColor("_EmissionColor", Color.black);
}
}
}
スクリプトの適用
作成したスクリプトを、Emissionを変更したいオブジェクトにドラッグ&ドロップします。スクリプトをオブジェクトにドラッグ&ドロップすると下記のように、「Cube」のInspectorにスクリプトが追加されます。
「Cube」のInspectorにあるEmission Contorollerの「Emissive Materiarl」へ、先ほど作成したマテリアルをドラッグ&ドロップします。
Unityの画面に戻ってシーンを再生してみると、キーボードの「Space」キーを押している間は、オブジェクトが赤色に発光することが確認できました!
ただ、なんとなく発光しているのかわかりづらいですね。
シーンのLightの光を遮ってみると見え方変わるかなと思い、Cubeをもう一面追加してオブジェクトを前後左右上下全て覆われた部屋のような空間の中に入れて光らせてみました。
結果
やはり色が変わっているのは分かるのですが、発光しているとは言いづらいです。
次の記事からは、もっと発光しているように見えるように試行錯誤してみます。
まとめ
この記事では、Unityでキーボード入力を使ってオブジェクトのEmissionを制御する基本的な方法を紹介しました。この手法は、インタラクティブなゲームエレメントを作成する際に非常に役立ちます。
コメント