こんにちは、Unityエンジニアのオオバです。

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

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

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

LookAt処理をノードで作成

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

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

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

サブグラフにして再利用

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

最終的なアウトプット

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

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

オススメ記事
検証環境