#HDRPでオブジェクトを点滅させたい
させたいですよね。
最初はHDRP/litの_EmissiveIntensityをスクリプトから操作して点滅させようとしましたが、値は変わるのにGameViewに反映されませんでした。
あきらめて、_BaseColorで点滅させられるように作りました。
EmissiveColorを前もって明度の高い色(白)にしておけば、
ぴかぴか点滅してくれます。
色はスクリプト上でいじります。
インスペクタ―で設定できるのはBPMだけです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EmissionBlinking : MonoBehaviour
{
private Material material;
private float length = 1.0f;
public int bpm = 120;
void Start()
{
material = GetComponent<Renderer>().material;
}
void Update()
{
float span = bpm / 60; //1秒に何ビートか?
float val = Mathf.PingPong(Time.time * span * 2f, length); //BPMの拍に合わせて点灯させるために *2 する
Color color = new Color(1.0f - val * val, 0f, 0f); //RGBで任意の色にする
material.SetColor("_BaseColor", color);
}
}
プログラミングなんてできねえ!
と思いながら始めたC#学習も、なんとかかんとか触りだけはこなせました。
よい映像制作につながるように来年もがんばります。