蛍光灯と点滅するポイントライトを使って、切れかけの蛍光灯を作ってみました。
まずポイントライトにスクリプトを使って、LightコンポーネントのIntensityを変えて点滅させます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PointLightScript : MonoBehaviour
{
[SerializeField] AnimationCurve curve;
[SerializeField] float speed;
[SerializeField] float intensity;
Light light;
float t = 0f;
// Start is called before the first frame update
void Start()
{
light = GetComponent();
}
// Update is called once per frame
void Update()
{
t += Time.deltaTime;
light.intensity = intensity * curve.Evaluate(t * speed);
}
}
ランダムにすると不自然だと思ったのでアニメーションカーブで点滅の仕方を設定してみます。アニメーションカーブはインスペクタから設定します。
ライトには蛍光灯がチカチカと鳴る音声を出すためのAudio Sourceも追加しました。
アニメーションカーブでは、縦軸の値を0~1の範囲にしながら、急に明るくなって徐々に暗くなるとか、たまに細かく点滅するというのを表現してみました。
右端の歯車をクリックしてLoopを選択すると、同じカーブを繰り返します。AnimationCurve.Evaluate()に横軸の値を入れると、対応する縦軸の値が返ります。引数に経過時間を入れているので、カーブに沿って値が変化し続けます。
これでチカチカと点滅する蛍光灯の光と音ができました。冒頭の動画ではポイントライトのすぐ下に蛍光灯のモデルを配置しました。