Widgetでパーティクルっぽいやつを作ったのでTwitterに動画をあげたら、いいねしてもらえたので記事にしてみます。さくっとParticleをWidgetに乗せる方法が見つけられなかったのでUMGで作ってみた次第です。
変数の型に Box2Dというのがありまして、
これを配列にして管理したらいいんじゃね?ってなったのが作り始めたきっかけ。
BoxなんでRectangle(長方形)の4頂点のうちの対角の2点を扱うための型です。
2D座標ということで xとy を扱うVector2D が2つ束ねられているかたちです。
今回これをFloat型が4つあるという認識で扱うことにしました。
ちなみに 他に (x, y, z)の Vector型で2点をまとめた Box型や、BoxSphereBounds型というのもあるようです。ピンの色的にStructure(構造体)の類ですよね。
パーティクル用に格納する値は3つ。最終回転角と目的地の座標です。
ここに粒ごとのゴール位置と何回転するかの値を入れていきます。
Construct Object From Classノードで Widgetの Image を量産して配列に格納。ついでにパーティクルのパラメータを設定。右端のマクロの中身はこんな感じ。
発生源から ±500(50.0刻み)の範囲がゴール位置。±3 ~ ±7 回転。
次にキャンバスに追加。
OffsetPos と、 Color はこのパーティクルWidgetを呼び出すやつがセットするので、受け取るための設定をします。
パーティクルが発生してから、2秒後に消滅するようにタイマーをセット。Tickのためのフラグを立てて、フェードアニメーションを呼び出します。
フェードアニメーションは、キャンバスに対して Render Oapicty を 1.0 → 0.0 にすることでパーティクルを一斉に消します。
移動処理のTickは以下。
一粒ずつ処理します。ポジションと回転は、WidgetのRenderTransform を使います。それぞれの更新に必要な計算はマクロでやってます。
getNewTranslation
getNewAngle
これでパーティクルのWidgetは完成。
あとは呼び出すだけ。
クリックしてヒットしたときの処理に追加します。
パーティクルのカラーは数字の色同様に、あらかじめ配列で持っておきます。
できあがりです。
一応動画を確認するためのツイートを貼っておきます。
クリックゲームにエフェクト付けてみた。UMGでなんちゃってパーティクルを再現。需要あるかな pic.twitter.com/lVcuvE3SDa
— みつまめ杏仁 (@MMAn_nin) February 13, 2019
パラメータを工夫すると散り加減が変えられたりして楽しめます。
テクスチャを貼るとまた違った印象になると思います。
ではでは
今回はこの辺で
ステキなUMGパーティクルライフを!