PopcornFXエフェクトをUnityスクリプトで制御する話
どうも、エフェクトアーティストのぴょんさんです。
もうすぐ、SIGGRAPH Asia 2018が開催されますね。今年は東京で開催されるので、私も見に行く予定です。SIGGRAPHに参加すること自体が初めてなので、今からドキドキです。
さて、今回はPopcornFXで作成したエフェクトをUnityのスクリプトで制御する話になります。
環境
- Unity2017.4.0f1
- PopcornFX1.12
再生関係の制御
基本的にエフェクトは、PKFxFXというコンポーネントを通して扱うことになります。
- 生成する
「Play On Start」をtrueにしておけば、Instantiateメソッド等でオブジェクトを生成したときに、エフェクトを再生することができます。ただし、UnityのParticleSystemのStop Actionにあたるものがないので、生成する場合は終了後に破棄する処理も必要になります。
- 再生する
var fx = GetComponent<PKFxFX>(); fx.StartEffect();
こんな感じです。すでにエフェクトを再生していると、再度StartEffectを呼んでも、再生が終了するまで再生されないため、注意が必要です。
- 終了する
fx.TerminateEffect();
TerminateEffectを呼ぶことで、再生しているエフェクトを終了させることができます。
Attributeの制御
PopcornFXで設定したAttirbuteをUnityのScriptで制御するにはどうしたらいいか疑問に思っていたのですが、意外と簡単にできることがわかりました。
以下、実装例のコード。
こんな感じでできちゃいます。文字列で変更を加えたいAttribute名を指定します。PK Fx FXコンポーネントに設定するFXにAttributeが設定されていない場合、上記のコードはNullReferenceExceptionが起こるので注意が必要です。