渋谷ほととぎす通信

新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。※あくまで個人ブログであり所属組織とは関係ありません

【Unity】Visual Effect Graphでパーティクルを指定した座標を向くようにする方法


f:id:esakun:20201025030524p:plain:w450

ParticleSystem(Shuriken)では出来なかった事シリーズです。ParticleSystemでは放出したパーティクルをあとからどうこうするということは出来ませんでした。

Visual Effect GraphではUpdate Particle Contextノードを使って毎フレーム処理を仕込む事ができます。それを使って寿命を永遠にしたパーティクルの向きを放出後に変更するというサンプルを作ってみました。

LookAt処理をノードで作成

Update Particle ContextノードにSet Angle XYZブロックをセットして、そのy要素に向かせたい方向をセットするというシンプルなノードです。

f:id:esakun:20201025030323p:plain:w600

Particleの現在座標はGet Attribute Position[Current]ノードを使い、向かせたい座標(Vector3)はExposed PropertyにしてC#側から代入しています。その2つの値で向かせたいベクトルを使って角度を出しています。

サブグラフにして再利用

最終的に自前のLookAt処理をサブグラフに変換して使い回せるようにしました。依存度のないスタンドアロンな処理はサブグラフにしておくと後々効率を上げてくれるような気がします。

最終的なアウトプット

このような感じで仕上がっています。


以下のアセットを使わせていただいております。
アニメーションも入ってて動物もたくさんいて、サンプルを作る際にとても助かっています。

環境 

  • Unity2020.1.6f1
  • macOS Catalina 10.15.5
  • Visual Effect Graph 8.2.0

こちらの記事もどうぞ