(Unity)スクリプトからマテリアルのEmissionのオン・オフを切り替える

(方向性)

・ボールがスイッチオンのオブジェクトに触れたらエミッションがオンになる。

・ボールがスイッチオフのオブジェクトに触れたらエミッションがオフになる。


(スクリプト)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ball : MonoBehaviour
{
    public float moveSpeed;
    private Rigidbody rb;

    // ★エミッション
    public Material boxMaterial;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        float moveH = Input.GetAxis("Horizontal");
        float moveV = Input.GetAxis("Vertical");

        Vector3 movement = new Vector3(moveH, 0, moveV);

        rb.AddForce(movement * moveSpeed);
    }

    // ★エミッション
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("SwitchON"))
        {
            // エミッションを使えるようにする
            boxMaterial.EnableKeyword("_EMISSION");

            // 黄色に発行させる
            boxMaterial.SetColor("_EmissionColor", Color.yellow);
        }
        else if (other.CompareTag("SwitchOFF"))
        {
            // エミッションの停止
            boxMaterial.SetColor("_EmissionColor", Color.clear);
        }
    }
}

(設定)

・スイッチオン、スイッチオフオブジェクトの「Tag」と「Is Trigger」の設定

 

・Ballオブジェクトを選択

・Boxオブジェクトに反映させてある「Material」を空欄に追加する。


(実行)

・設定が完了したらゲームを再生

・Ballがスイッチオンに触れたらエミッションが発動

・Ballがスイッチオフに触れたらエミッションが停止すれば成功です。