🎄
ClusterScript - 点滅するイルミネーション
クラフトアイテムで、イルミネーションを順番に光らせるScriptです。
完成イメージ
Hierarchy
光っているメッシュと光っていないメッシュが、同じ位置にあります。
Script
// 表示する電球の数
const fxSize = 7;
// ひとつの電球が表示される長さ
const fxDisplayTime = 0.5;
// Unityで、点滅させたいGameObjectの光ってるほうに fx_on_0, fx_on_1, fx_on_2, ... と名前をつけてください。
const fxOn = Array(fxSize);
for (let i = 0; i < fxSize; i++) {
fxOn[i] = $.subNode("fx_on_" + i);
}
// Unityで、点滅させたいGameObjectの光ってないほうに fx_off_0, fx_off_1, fx_off_2, ... と名前をつけてください。
const fxOff = Array(fxSize);
for (let i = 0; i < fxSize; i++) {
fxOff[i] = $.subNode("fx_off_" + i);
}
const fxPeriod = fxSize * fxDisplayTime;
$.onUpdate(deltaTime => {
let time = $.state.time ?? 0;
time += deltaTime;
$.state.time = time;
for(let n = 0; n < fxSize; n++){
if(time % fxPeriod > fxDisplayTime * n && time % fxPeriod < fxDisplayTime * (n+1)){
fxOn[n].setEnabled(true);
fxOff[n].setEnabled(false);
} else {
fxOn[n].setEnabled(false);
fxOff[n].setEnabled(true);
}
}
});
ベータ機能を使ってもよいなら、setEnabledの代わりに、MaterialHandleのsetEmissionColorを使うのも良さそうです。
Discussion