ビデオの内容紹介
キャラクターが走る時、足の接地とともにホコリが立つようにします。そのためにはアニメーション Notify というものを使います。本シリーズ最終回!
原題 Introduction to Third Person Blueprint game – 22 – Creating Animation Notifies in UE4
[1] Notify を設置する
Notify は、アニメーション中にあるエフェクト (今回はホコリを立たせます) を生じさせるために、「はい、今、エフェクトを起こして!」とアニメーションに対して通知する (notify) ものです。
この Notify を設置するためには、まず、エフェクトが起きる位置を socket (ソケット=差し込み口) で指定します。これまで使ってきた CharacterAnimBP を開きます。
[アセット ブラウザ] タブで Run をクリックします。(Run の時に生じるエフェクトです。)
[スケルトンツリー] タブで、ball_r を右クリックします (ball とは親指の付け根あたりの丸い部分のことを言います)。
メニューから [ソケットを追加] を選択します。
ソケット名を FootEmitter_r にします。(emitter はエフェクトを「出すもの」という意味です。)
左足についても同じようにします。すなわち、ball_l を右クリックして、FootEmitter_l を追加します。
これからの作業のために、下にある一時停止ボタンで再生を停止しておきます。
エフェクトは、足が着地した時に発生するようにしたいので、その瞬間を下の赤いスライダーを左右に動かしながら見つけます。(つまり、スクラブ再生というやつを行うことになります。)
その位置が決まったら、その時にトラック内にある赤い線を右クリックします。
[通知を追加] を選択します。
さらに [PlayParticleEffect] (パーティクルエフェクトを再生) を選択します。
PlayParticleEffect をクリックします。
すると、[詳細] タブの Anim Notify セクションでエフェクトを選択できるようになります。「なし」をクリックします。
試しに P_Explosion パーティクルシステムを選択してみます。Explosion は「爆発」です。
走らせてみると、爆発します。
メインエディタで [プレイ] してみると、
足に火花がまとわりつくような感じになっているので、
CharacterAnimBP に戻って、[詳細] タブの Anim Notify セクションで [Attached] (付属させられる) のチェックを外します。
メインエディタで [プレイ] してみると、今度は火花が置き去りになりました。
[2] ホコリのエフェクトを作る
今度は爆発のエフェクトではなく、当初の目的であったホコリのエフェクトを作ります。ただし、元からあるものに手を加えて作ることになります。
まず、メインエディタの [コンテンツ ブラウザ] タブで Particles フォルダを開き、P_Steam_Lit を選択します。(これが元になるものです。)
これを右クリックして、[複製] を選びます。
名前を P_Dust_Puffy にします。
これをダブルクリックすると、エディタが開きます。
これから、ホコリらしくするために、さまざまな変更を加えていきます。まず、[詳細] タブの [Warmup Time] を 0.0 にセットします。(Warmup Time は、エフェクトが生じるまでに待機する時間です。後に設定する Lifetime よりも長いとエフェクトそのものが発生しなくなります。) (なお、[詳細] タブに Warmup Time が表示されていない場合は、[エミッタ] タブの黒い部分をクリックしてみてください。)
[エミッタ] タブで、[Spawn] をクリックしてから、[詳細] タブの [Spawn] セクションで [Rate] → [Distribution] → [Constant] を 0.0 にセットします。さらに、[Process Spawn Rate] のチェックを外します。
Distribution とは「分布」という意味で、この場合は、Spawn Rate (パーティクルが発生する率=1秒間に発生するパーティクルの数) をどのような値に分布させるかを指定するためのセクションです。ただし、今回は Spawn Rate を使わないので 0.0 にして [Process Spawn Rate] のチェックも外しています。
そのかわりに [Burst] (一気にパーティクルを出す) セクションで設定します ([エミッタ] タブは [Spawn] のままです)。つまり「率 (1秒あたりの個数)」ではなく「一気に出る個数」でエフェクトを表現しようとしています。(ホコリなので、後からパーティクルが出てくると不自然なので。)
[Burst List] の横にあるプラスボタンをクリックして、Const (一定の値) を 10 にセットします。これによって、10個のパーティクルが発生することになります。
次に、[エミッタ] タブで [Required] (必須) タブをクリックして、[詳細] タブの [Duration] (期間) セクションで [Emitter Loops] (エミッタの繰り返し) を 1 にセットします。エフェクトが発生するのは、足が接地した1回だけです。
さらに、[Emitter] セクションで [Kill on Completed] (エフェクトが完了したらパーティクルを削除する) にチェックを入れます。
[エミッタ] タブで [Lifetime] (パーティクルの有効期間) をクリックしてから、[詳細] タブの [Lifetime] セクションで Min を 1.0 (秒)、Max を 2.0 (秒) にセットします。Distribution が Distribution Float Uniform の場合、ランダムな値が返されます。その際、Min~Max の間にある値が選ばれます。
次に、[エミッタ] タブで [Color Over Life] (有効期間中のカラー) をクリックしてから、[詳細] タブの [Color] セクションで R (赤) を 1.0、G (緑) を 0.7、B (青) を 0.5 にセットします。これは、茶色っぽい色にしています。
さらに、アルファ (透明度) を設定します。まず、[エミッタ] タブで [Color Over Life] の右横のグラフのアイコンをクリックします。
[カーブエディタ] タブが開かれます。横軸が時間で、縦軸が値です。見やすくするために、上辺をドラッグしてみます。アルファのグラフは Alpha Over Life です。
どの線が Alpha Over Life のものなのか、はっきりさせるには、次のように他のグラフを非表示することができます。(Color Over Life の右横の小さな□をクリックしています。)
グラフの点をドラッグしながら、大体次のようにグラフの形を設定します。
ホコリの透明度を上げ、さらに、時間の経過によって見えなくなるようにします。ホコリが立った時にすぐ不透明度を上げて、それから徐々に透明度が上がっていることが分かります。
次に、[エミッタ] タブで [Initial Velocity] (初速) をクリックしてから、[詳細] タブの [Velocity] セクションで初速のランダムの値の最大最小を設定します。Z はそのままにしておき、X と Y は、それぞれ、Max 100 / Min -100 にセットします。
さらに、[エミッタ] タブで [Initial Size] (最初のサイズ) をクリックして、[詳細] タブの [Size] セクションで、Max、Min それぞれの X を 75 と 50 にセットします。
次に、[エミッタ] タブで [Drag] (抵抗) をクリックして、5.0 にセットします。(drag は「引っ張る」という意味なので、前進するものを後ろから引っ張って、前に進みづらくするもの=抵抗を表現しているのだと思います。日本語でも「後ろ髪を引かれながら」などと言いますよね。)
これによって、ホコリが舞い立つとすぐにその速度が下がるため (=前進する速度が減速するため)、ホコリはあまり拡散されないうちに消えていきます。
[3] 作成したエフェクトをセットしてテストプレイする
CharacterAnimBP に戻って、トラックの中の P_Explosion をクリックして、[詳細] タブでホコリ エフェクトを選択できるようにします。
作成した P_Dust_Puffy を選択します。
もう片方の足についても同様に P_Dust_Puffy をセットしておきます。
いよいよ、テストしてみます。
うまくホコリが舞い立ちました。
本編は長いサードパーソン シリーズの最後のチュートリアルでした。読んでいただきまして、本当にありがとうございました。次回シリーズでもどうぞよろしくお願いいたします。
コメント
なんかやったあとエミッターをKill On Completedにしても消えないと思ったら、このチュートリアルにない設定でP_Dust_Puffyをダブルクリックして一番はじめに出てくる設定のループ設定が初期値で0になってて、そのままだと継続的なループを意味することになるらしいです。
1にセットしてください。