Engine】VelocityやForceを使わずにパーティクルを回転させる最もシンプルな方法を解説。一覧をサムネイル付きインデックスで見るこの記事で学習できること以前にVelocity(速度)のモジュールを使ってパーティクルを動かす記事を書いた。謎の技術研究部またForceというモジュールでも力を与えられるが、こちらはまだ解説していない。今回はこの2種類を使わないパターンの回転を紹介する。videos.上のように各個体がそれぞれの軸で回転するようなモジュールの組み方を解説する。回転のついでに自前で変数を用意して、その値を再利用してやる方法も紹介する。ナイアガラではこの変数を「パラメータ」と呼ぶ。前提条件この記事では次の動画のように星が飛ばせるところまでは誰でも作れるという前提で話をすすめる。videos.基本はFountainのテンプレートにてSpriteのマテリアルを星にかえただけだ。回転は組み込まれていないので星が飛んでいくだけとなっている。自分で再現する場合、星のテクスチャは上を自由に使ってもらえればと思う。補足:以前の記事も参考に実は次の記事の最下部で紹介したものとほぼ同じものを作っている。謎の技術研究部こちらの記事ではParticleRotationという変数を直接書き換えて回転させているが、今回はモジュールを使う。ナイアガラでマテリアルの使い方などがわからない場合は上の記事から読んでもらえればと思う。Rotationという変数に直接値を加算して回転させていたが、実はモジュールに回転をコントロールするものがあるのでそちらを使う。Rate本記事のメインモジュール。Rateというモジュールを追加しよう。Rateを変更するだけで回転が加わるというシンプルさだ。これで本記事は解説完了と言っても良い。videos.適当に300を設定した例。Rateは定数を入れてしまうと一方向にしか回転しない。当然ではあるが、回転速度も一定だ。非常にシンプルなモジュールだが、回転にバリエーションをもたせたい場合は少し工夫が必要そうだ。左右の回転をランダムにしたい回転はマイナス値を入れれば左に回る。Floatを使ってランダム値をマイナスからプラスへ入れればよい。余談:回転がぷるぷるするのでは?このやり方だと毎フレームごとに乱数が設定されるので星がプルプルするのでは?と気付いた人は鋭い。Onlyになっていれば乱数の発生は最初の1度きりとなるためプルプルしない。videos.左右にランダムで回っている左右はランダムで回転速度を固定にしたいここからは少し難しくなる。300の間で乱数が発生するので、1とか5とか非常に小さい値が返った時は殆ど回転しないスプライトが飛ぶことになる。300の2通りして、常に固定速度で左右に回転させたい。先に理解しておくこと上でも書いているが、パーティクルの更新でダイナミックインプットで乱数を入れると、毎フレームごとに乱数が更新されるので本当なら星がプルプルしてしまう。Floatがソレを防止してくれていたので実現できたが、ここからのケースはパーティクルの更新ではなくパーティクルのスポーンを使う必要がある。パーティクルが生み出された時に1回だけ処理が走るため、乱数の生成は1度きりとなるわけだ。ここからは実際の手順を追いながら理解してもらえたらと思う。パーティクルのスポーンでパラメータを作るまずはパーティクルが生み出された瞬間に右に回るのか、左に回るのかを決定する。新しい「パラメータ」を作ってそこに数値を保存してやる必要がある。追加ボタンを押して一番下までスクロールして「新規または既存のパラメータを直接設定」そうすると「パラメータを設定」というモジュールが出てくるので、こちらのプロパティをいじる。こちらで+ボタンをおしてここでも「新規パラーメータを作成」する。共通の中にFloatがあるので選択。これで一つのパラメータを作ることができた。ここには自由に名前をつけて値を保存しておける。randomRotationという名前にしておいた。AOrBFloatを設定する。これは入力したAとBの値どちらか片方をランダムに出力するもの。今回の作例にもってこい。設定は上のようにした。Weightはこのランダムの偏り具合の設定。どちらも同じ確率で出てほしいので0.5でOK。Rateに作ったパラメータを入れるここまでの設定で、パーティクルがスポーンした時に1度だけ-300か300の値がrandomRotationというパラメータに格納される。このままだと実際に回転させる値につなげていないので何も起こらない。Rateに先程作成したパラメータをダイナミックインプットとして入れてやる。次のようになれば設定完了おまけ:完成の前にカラーを設定さて、これで左右に常に300のスピードで回る様になったはずだ。作例を出す前にカラーを設定しておく。Hue/Saturation/Valueを使うと色相の違う色をランダムに出力できる。Colorモジュールを追加して、徐々にフェードアウトして消える設定も作ったが、これはお好みで。ColorはInitializeの外でもカラーを調整できるようにするモジュール。次のような作例となった。videos.※星のパーティクルは可愛い気がするので好み。最後に今回はパーティクルをVelocityやForceを使わないでシンプルに回転させる方法を一つ紹介した。簡単な例だが、新しいダイナミックインプットと合わせて一つずつ覚えていってもらえればと思う。Inputs)ナイアガラ超基礎この記事をシェア著者Ultra-Noob謎の技術研究部部長。3DCG以外にもDTMやプログラミング等も研究する。謎の技術研究部とはプライバシーポリシーホーム(自動スクロールなし)ご意見、お問い合わせ。