まきゼミ技事録!

とあるゼミのプログラマー達が送る技術ブログのようなもの

PopcornFXエフェクトをUnityスクリプトで制御する話

どうも、エフェクトアーティストのぴょんさんです。

もうすぐ、SIGGRAPH Asia 2018が開催されますね。今年は東京で開催されるので、私も見に行く予定です。SIGGRAPHに参加すること自体が初めてなので、今からドキドキです。

さて、今回はPopcornFXで作成したエフェクトをUnityのスクリプトで制御する話になります。

環境

  • Unity2017.4.0f1
  • PopcornFX1.12

再生関係の制御

f:id:MakiZemi:20181130143341p:plain
基本的にエフェクトは、PKFxFXというコンポーネントを通して扱うことになります。

  • 生成する

 「Play On Start」をtrueにしておけば、Instantiateメソッド等でオブジェクトを生成したときに、エフェクトを再生することができます。ただし、UnityのParticleSystemのStop Actionにあたるものがないので、生成する場合は終了後に破棄する処理も必要になります。

  • 再生する
var fx = GetComponent<PKFxFX>();
fx.StartEffect();

こんな感じです。すでにエフェクトを再生していると、再度StartEffectを呼んでも、再生が終了するまで再生されないため、注意が必要です。

  • 終了する
fx.TerminateEffect();

TerminateEffectを呼ぶことで、再生しているエフェクトを終了させることができます。

Attributeの制御

f:id:MakiZemi:20181130152208p:plain
PopcornFXで設定したAttirbuteをUnityのScriptで制御するにはどうしたらいいか疑問に思っていたのですが、意外と簡単にできることがわかりました。
以下、実装例のコード。
こんな感じでできちゃいます。文字列で変更を加えたいAttribute名を指定します。PK Fx FXコンポーネントに設定するFXにAttributeが設定されていない場合、上記のコードはNullReferenceExceptionが起こるので注意が必要です。

まとめ

スクリプトで制御する方法を紹介しました。これさえわかればいろいろできるのではないかと思ってます。ほかにも便利なものとか面白い機能があったら、紹介したいと思います。

おわりー(-.-)