‫こんにちは､ ようこそ｡
‫この講義では､ マズルフラッシュを生成して､ トリガーを押したときにパーティクル効果を得る方法を説明します｡
‫それでは､ C++からどのようにこれを行うことができるのか､ 見てみましょう｡
‫なるほど｡
‫そこで､ 銃口から発生するパーティクルエフェクトをいくつか用意します｡
‫どうすればいいんだろう？
‫まず､ どのようなパーティクルエフェクトがあるのか見てみましょう｡
‫シューティングゲームのやつをパクったんだよ｡
‫もちろん､ 好きなパーティクルエフェクトを使用することができます｡
‫アセットストアで販売されています｡
‫私のような例題プロジェクトからも､ それらを取り入れることができます｡
‫エフェクトを潜り抜けたい｡
‫アセットパック､ ゲームエフェクト､ そしてパーティクルシステム､ 武器､ アサルトライフルを見ていきます｡
‫そして､ 少なくとも最初はマズルの方を探しています｡
‫そして､ このアサルトライフルが欲しいのです｡
‫そして､ この中のシェーダーをコンパイルするのに少し時間がかかることがわかると思います｡
‫しかし､ 本来マズルフラッシュはこのようなものなのです｡
‫マズルフラッシュのように見える｡
‫これは､ トリガーを引いたときにC++でこれを生成してみるというものです｡
‫では､ 銃の中に入ってみましょう｡
‫銃に向かう｡
‫CP そして､ この撃たれたというログメッセージの代わりに､ 特に有用ではないのですが､ パーティクルエフェクトを発生させたいと考えています｡
‫そのために､ ゲームプレイのスタティックにある関数を使います｡
‫では､ ゲームプレイのスタティックスタートに移動して､ この中を少し見てみましょう｡
‫エミッターをスポーンしたいんだ､ エミッターをスポーンって言ってるんだ｡
‫これを見ると､ ワールドコンテキストオブジェクトが取り込まれていることがわかります｡
‫パーティクルシステムを取り込んでいます｡ これはエミッターテンプレートと呼ばれているもので､ 位置､ 回転､ スケール､
‫ブラフ､ ブラフ､ ブラフ､ ブラフ｡
‫あるいは､ スポーン・エミッターをアタッチして､ コンポーネントにアタッチするようにしてもいいと思います｡
‫さて､ 今回の場合は､ こんな感じでしょうか｡
‫当該粒子効果に依存する｡
‫しかし､ パーティクルエフェクトの中には､ パーティクルを一定時間発生させ続けるものがあります｡
‫だから､ その粒子を銃口からどんどん出してほしいんです｡
‫銃が動くと､ 煙が出たりするかもしれませんね｡
‫撮影中に銃を動かしたら､ パーティクルエフェクトも一緒に動かしたいですよね｡
‫これから使うのは､ このスポーン・エミッターを取り付けたものです｡
‫そして､ ここに書いてあるように､ エミッタ・テンプレートと､ アタッチする必要のあるシーン・コンポーネントを取り込みます｡
‫だから､ そういうものがほとんど必要になるんです｡
‫また､ このアタッチポイントの名前は､ ソケットになる予定です｡
‫だから､ 銃口に直接取り付けられるというのは､ 実はとても便利なことなんです｡
‫オフセットの類は必要ないので､ 見てもらいましょう｡
‫BPライフルを開いてみると､ これがスケルトンメッシュであることはすでに述べたとおりです｡
‫そこで､ コンテンツブラウザでそのライフルを探して､ ライフルメッシュを開いてみます｡
‫左側のスケルトン・ツリー・ペインを表示させると､ ライフルのルート､
‫ライフルのマガジン､ おそらく交換可能なものがありますが､ 特に興味はありません｡
‫そして､ このマズルフラッシュソケット｡
‫そこで､ マズルフラッシュを発生させることになります｡
‫以前の講義で見た方法でいつでもソケットを追加することができますので､ もしメッシュにこれがなかったら､
‫先に進んで追加してください｡
‫では､ これをスポーンしてみましょう｡
‫最初に必要になるのは､ これらのパーティクル システムの参照の 1 つです｡ これを行う最良の方法は､
‫私が知る限りでは､ 新しいプロパティを作成してブループリントで行うことです｡
‫名前付き参照で行う方法もありますが､ 私は名前付き参照を使うのが本当に嫌いです｡
‫名前を変えるとすぐに壊れてしまうので､ すべて処理されるブループリントでやったほうがずっと簡単です｡
‫なぜなら､ ゲームプレイ中にこれを変更するとしたら､
‫そうしたいかもしれません｡
‫次に撮影するときは､ 別のパーティクルエフェクトが作成されることになる｡
‫それから､ これのタイプはUである必要があります｡
‫パーティクルシステムポインターは､ このようにマズルフラッシュと呼ぶことにしています｡
‫そして､ それをBlueprintで設定するのです｡
‫C++のpull triggerメソッドに戻り､ U gameplay statics関数と呼ぶことにしましょう｡
‫ゲームプレイ静的データにカーソルを合わせると､ エンジンクラスの下にあることがわかります｡
‫Kismetゲームプレイの静止画｡
‫そこで､ 必要なのはkismet gameplay static stageで､ ゲームプレイのスタティックを自動完成させ､ スポーンしたいのですが､
‫これはunrealのバージョンによってうまくいく場合といかない場合があるようです｡
‫エミッターを装着した状態でスポーンし､ マズルフラッシュをここで発生させます｡
‫そして､ それをシーンコンポーネントに取り付けたいと思います｡
‫この場合､ 銃のメッシュに取り付け､ 適切なソケットに取り付けたいと思います｡
‫そこから直接コピーして､ 行末にセミコロンをつけるだけでトップになるんです｡
‫だから､ これでうまくいくはずです｡
‫それでは､ エンジンのコンパイルを押してみましょう｡
‫コンパイルが完了したら､ BP Underscore Rifle
‫に移動して､ フル blueprint エディタを開きます｡
‫実際には､ アクター自体やクラスのデフォルトは詳細ペインに移動します｡
‫このマズルフラッシュプロパティは新しいもので､ ここでパーティクル効果を見つける必要があります｡
‫銃口というキーワードで探してみる｡
‫見てみよう｡
‫もしかしたら､ マズルは求めていたものではなかったのかもしれません｡
‫アサルトライフルMFです｡
‫そうだと思います｡
‫マズルフラッシュ
‫そんな立ち位置なのでしょうか｡
‫だからアサルトライフル｡
‫MF それはコンパイルして保存しておきたいものですね｡
‫そして､ サンドボックスに移動して再生ボタンを押し､ 実際に撮影してマズルフラッシュが起動するかどうかを確認します｡
‫そして､ 現在､ 連続撮影していることがわかります｡
‫だから､ マズルフラッシュ一発で済ませるようにしたいんです｡
‫だから､ 本当は違うマズルフラッシュを選ぼうと思うんですけどね｡
‫スナイパーとプライマリーがあるレイスのアセットパックのものを使おうかと思います｡
‫速射性のある武器を作りたいわけではないだけに､ プライマリーを選ぶことにしています｡
‫それは少し違うやり方ですね｡
‫大きく違うわけではなく､ 一旦ホールドしてエミッタをスタートさせ､ 使い終わったらクローズさせるという感じです｡
‫その場合､ そのエミッターを1回だけ起動させたいのです｡
‫そこで､ もう一度ULPを行い､ さあ､ 撮影だ､ 銃口から一閃､ すべてが順調にいくかどうかを確認します｡
‫私が動き回ると､ どこを向いても銃口が正しい方向に点滅するので､ 銃の先にもきれいに付いているようです｡
‫かっこいい｡
‫まあ､ これは本当にパーティクルエフェクトを使ったシューティングゲームみたいになってきましたね｡
‫そこで､ 次回の講義では､ レイトレーシングの最初のステップとして､ 実際にキャラクターの持ち主に手を伸ばして､
‫何らかの情報を得るところから始めてみたいと思います｡
‫現地でお会いしましょう｡