🎄

ClusterScript - 点滅するイルミネーション

2024/11/22に公開

クラフトアイテムで、イルミネーションを順番に光らせる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