News Activity Product Learning red Event Contact
Devblog top img

開発ブログ

2017-09-18

毒ガスの作り方

UE4

writer : tomoko

今回は、プレイヤーが内部に入るとダメージを受け、弾を当てると消える毒ガスを作っていきます。スターターコンテンツが必要です。

 

 

準備

 

 

 まずは、ブループリントを用意します。画面の上の方にあるブループリント→新規の空のブループリントクラスを作成→Actorと選択します。名前は好きなものにしてください。私はFogにしました。名前をつけ終わったらOKを押してください。


下の写真のようになれば、ブループリントが用意できました。

 

 

 

 

見た目

 

 

 

 

 続いて、毒ガスの見た目を作ります。画面の左端にあるコンポーネント→Particle Systemの順に選択してください。

コンポーネントにParticle Systemが追加されました。これから、Particle Systemをいじります。Particle Systemを選択したら、画面右のParticleにあるTemplateの右側の「なし」となっている部分をクリックしてください。様々なパーティクルが表示されると思います。

どれを選択するかによって、見た目が変わります。今回は毒ガスを作るので、P_SmokeやP_Steam_Litがいいと思います。私はP_Steam_Litにしました。すると下の写真のように見た目が変わりました。

毒ガスっぽくするために、煙の色を変更していきます。先ほどパーティクルを選択した部分の横に、煙が表示されています。そこをダブルクリックしてください。

すると、下の写真のような画面が現れます。今回は色を変えるだけですが。ここでは煙の流れ方のような、見た目の細かい部分を変更することができます。

それでは、色を変えていきましょう。画面中央部のColor Over Lifeを選択し、画面左にある詳細のDistributionの右の三角形をクリックしてください。

Constantが表示されたはずです。その横にある白いバーが煙の色を表しています。バーをクリックしてください。

カラーピッカーが現れました。ここで、煙の色を選んでください。

ピューポートを見てください。少し見えにくいのですが、煙の色が変わりました。

実際に設置して確かめましょう。プループリントを作った時の画面に戻ってください。画面下の部分で、自分がつけたブループリントの名前を検索し、そのブループリントをドラックして、画面中央まで持って行ってドロップしてください。これで設置完了です。

ここでプレイしていただけるとわかると思いますが、ただ紫の煙がそこにあるだけです。 次は、その煙にプレイヤーが触れるとダメージを受けるというプログラムを作っていきます。

 

 

 

プレイヤーがダメージを受ける

 

 

 

 これから、毒ガスにプレイヤーが触れるとダメージを受けるようにします。 まずは、毒ガスにcollision(当たり判定)を追加しますcollisionにはbox、capsule、sphereの3種類があります。今回は、Sphere Collisionを使用します。ブループリントのコンポーネントを追加を選択し、Sphere Collisionを検索して追加してください。

collisionのサイズなどを煙に合わせます。ブループリントのピューポート(下の写真の画面)を開き、赤い丸の部分、または緑の丸の部分で collisionの中に毒ガスが大体収まるようにcollisionのサイズや位置を調節してください。

続いてプログラムを書いていきます。
最初に、プレイヤーのブループリントに書きます。コンテンツから、FirstPersonCharacterを検索してFirstPersonCharacterを開くか,、コンテンツ→FirstPersonBP→Blueprints→FirstPersonCharacterの順に選択してください。

そこに、下のようなプログラムを書いていきます。

これは、HPをDamege分減らし(減らす量は毒ガスのブルーブリントの方で設定します) HPが0以下になったらスタートしたスタートした最初の状態に戻るというプログラムです。 Damageは、カスタムイベントです。カスタムイベントを追加し、画面右の詳細の部分を下のようにしてください。

HPは変数です。画面左の変数の隣の+をクリックして変数を追加し、画面右の詳細の部分を下のようにしてください。

次に、先ほどの毒ガスのブループリントに戻ります。
そこに、下のようなプログラムを書きます。

赤で囲った部分では、プレイヤーが毒ガスのcollision内に入ったら変数InOrOutにTureを入れています。
青で囲った部分では、逆にプレイヤーが毒ガスのcollisionから出たら変数InOrOutにFalseを入れています。 変数の作り方は、先ほど変数HPを作った時と同じようにして、詳細の部分を下の画像のようにしてください。

変数をセットするときに、下の赤い丸の部分にチェックを入れているとTure、入れないとFalseが変数に入れられます。

緑で囲った部分では、先ほど作ったカスタムイベントDamageでプレイヤーにダメージを与えるということを、変数InOrOutがTureの間、2秒おきに繰り返しています。Damageの数字を変えるとプレイヤーに与えるダメージの量が変わり、Retriggerable Delayの数字を変えると何秒おきに繰り返されるかが変わります。

 

 

 

毒ガスが消える

 

 

 

 毒ガスのブループリント毒ガスのブループリントに弾があたったら、少しずつ小さくなりながら上に上昇するプログラムを書いていきます。
毒ガスのブループリントに下のようなプログラムを書きます。SetActorRotationはピンを右クリックして、ピンを分解を選択して使っています。

1枚目と2枚目のプログラムは繋がっています。
まず1枚目は、弾が毒ガスのcollisionに当たったら弾が消えるというプログラムです。
2枚目は、赤で囲った部分で毒ガスの大きさを0.95倍し、緑の部分でZ座標の正の向きに位置を5ずらし、青で囲った部分でZ軸を中心に30度回転させるということを0.05秒ごとに繰り返しています、これも数値を変えると消え方が変わります。