記事一覧

2015年10月26日月曜日

【Unreal Engine】メモ5(OnComponentBeginOverlapにおいて、敵のダメージ処理)

敵をレベル内に配置し、AIの作成に入る前に簡単なダメージ処理を作成してみました。

私自身UE4のブループリントの使い方はまだ慣れていませんが、自己流で作成してみたので宜しければ参考にしてみてください。


敵のCapsuleComponentに、何らかのアクタが触れた時にOnComponentBeginOverlapイベントを発生させます。

その処理内容は画像1の通りになります。


①敵のHPは10で、アクタが触れたら 10.0-1.0=9.0になり、変数のHPに9を代入します。

②もし、敵のHPが0.0じゃなかったら、残りの敵のHP数をキャストしてPrintStringで表示させます。

③0.0だった場合は Destroy Actorでレベルないから敵が消えます。
画像1 敵のダメージ処理



実際に弾を的に数発当ててみたら、画像2の左上に敵のHPが文字で表示されています。
画像2 実際に弾を当てる




せっかくfloat型を使用しているので、ダメージ数を0.23~3.10の間でランダムで処理させてみました。
画像3 floatrandomによる



2015年10月22日木曜日

【Unreal Engine】メモ4

WhilLoopについて・・・

とある参考書を読み進めながら勉強していくうちに、ちょっと躓いたのがWhilLoopです。

◆用語
・WhilLoop:条件と一致してれば繰り返し処理を行うノード




int型の変数num=6が素数か素数じゃないかを、画像1の処理の流れを自分なりにご説明いたします。

①イベントBeginPlayから実行パルスを最初に流して、WhilLoopノードが真なのでLoopBodyに処理が流れます。

②Countの変数に+1ずつ代入し、num=6と1を割った時の余りが0じゃなかったら偽のBooleanにパルスを流し、0だったら止める。

③Countとnumが等しかった場合、Booleanの実行パルスの方に処理が流れて、ブランチノードを通じて繰り返し処理を終了して、「OK」つまり素数と表示させる。
画像1 WhilLoop処理の例


説明がヘタクソで済みませんが、まぁ何回か見てると処理の流れが自然に頭の中に入ってきます。

【Unreal Engine】メモ3

ForLoopの基本的な使い方について学んだことをメモしていきたいと思います。



◆用語
ForLoop:繰り返し処理が行えるノードで、FistIndexに繰り返したいインデックス番号を整数で入力し、LastIndexでどこまで繰り返すかを定義する。その結果をLoopBodyから出力し、処理が全て終了すると、Completedノードに実行パルスを流す。また、Indexを出力することも可能。

Delayノード:前にも説明した通り、実行処理を遅らせることができるノード。 float型で秒数を指定できるようになっている。

Appendノード:2つの値を1つにまとめることができるノード。

ForEachLoop:配列の値を処理する事ができるノード。

LENGTHノード:配列の長さを取得するノード。




10回こんにちはと表示させて、処理が終了して1秒後にさようならと表示させるプログラム。
画像1 ForLoopの使用例1



Int型の変数Dataを作成し、5つのインデックスを作成してその中に値を代入。それをForEachLoopの繰り返し処理によって合計値の変数numに代入され続けて、処理が終了次第Completedから実行パルスを流し、num/Lengthを行って平均値を出力した。
画像2 ForLoopの使用例2



こちらのプログラムはdataの配列を繰り返し足し合わせて、numに代入して出力したもの。
画像3 ForLoopの使用例3





【Unreal Engine】メモ2

今回は2つの計算式の合計を比較し同じだったら○、間違いだったら✖というブループリントを作成してみました。

◆用語
・イベントBeginPlay:ゲーム開始時に実行される処理ノード
・変数:値を保管しておく為の入れ物
・Meke Literal Int:整数をその場で作成するノード
・PrintString:文字列を表示するノード
・ブランチ:真か偽を判断するためのノードでConditionにチェックを入れておくと真になり、外すと偽なる。


早速画像1を見てみましょう。
これだけ見せられても変数の値が何かわからないので、真か偽どちらか分からないと思います。

◆Int型の変数の値の詳細
・Coin1=10
・Coin2=2
・Coin3=100
・Coin4=5

これだったら、○か✖どちらに処理が行くのか明快です。

答えは○です

画像1: とある計算式の真偽処理



何故○なのか分からなかった人はコメント欄にメッセージ下さい。

2015年10月13日火曜日

【Unreal Engine】日記1

UE4の極本を本格的に始めてから3週間近くが経過しました。
進捗状況としては第25章のマテリアルに突入しましたが、何故かやる気がおきず1週間放置・・・

とまぁ、ぶっちゃけこの本では基本的なマテリアルの構造しか説明していないので、臨場感溢れる美麗なマテリアルを作成できるかと言われると無理な感じです。

ちなみに、10月7日に発売されたUE4のマテリアル本をこの前丸善で確認したところ、ページ数600ぐらいでマテリアル理論がぎっしり詰まっていましたΣ(゚д゚lll)

自分はこの本を来週ぐらいに購入して、11月から本格的に卒業制作で作成したモデルにマテリアルを割り当てていきたいと考えています。


画像1 制作しているステージのプロトタイプ



【Unreal Engine】メモ1

皆様こんばんは、UnrealXiです。今回はHUDの事について少しだけメモしていきます。


◆そもそも、HUD(ヘッドアップディスプレイ)とは何か?
・簡単にご説明させていただくと、3D上にウィジェットブループリントで作成したUI要素を重ねて画面上に表示するものです。


ちなみに私は、卒業制作でFPSゲームを制作していて、HUDで作成する体力ゲージ、弾丸数、レーダー、獲得アイテム個数などをHUDを使って画面上に表示させる事を目標にしています。



取り敢えず、ウィジェットデザイナーでcanvaspanelにvirtualboxとその中にtextを追加しました。
今回はTest_MAP2というレベルで作成したウィジェットを表示したいので、そのレベルブループリントを開き、イベントグラフで図1のようなものを組みました。

まず、イベントBeginePlayからウィジェット作成ノードで先程作成したウィジェットブループリントのクラスを選択し、それをDelayノードで1秒送らせて、ビューポートに表示させる処理を実装。
図1 作成したウィジェットをレベル内に表示させる処理




※ここでの注意事項
・UIの部品は、canvaspanel上に配置する。
・ウィジェットを表示させたいレベルでレベルブループリントを開いて編集する。


※ノードの説明
・イベントBeginePlay:ゲーム開始時に実行されるノード
・ウィジェットを作成:作成したウィジェットブループリントのクラスを指定し、使えるようにできる。
・Delayノード:実行する処理を秒数を指定し、遅らせることができる。
・Add to Viewport:レベル上にターゲットで繋いだコンポーネントを取得し、表示させる。


久しぶりの投稿であまり説明が上手くできませんでしたが、これからも記事を書き続けるのでよろしくお願いしますヽ(*´∀`)ノ