Sequenceノードの誤解

誤解してたのだけど、Then0へ処理が走って、Then0の処理が終わったらThen1の処理をする訳ではないので気をつけないと変な結果になる。

Then0の処理が走って、次にThen1の処理が走るって事。Then0の処理が終わったらThen1の処理が走る訳じゃないよ。

Then0の処理が終わってなくとも走ればThen1の処理が始まっちゃうよ。

キーボード入力の実装

キーボードの入力は直接もできるのですがここでは「プロジェクト設定」の「インプット」で行います。

こんな感じで

レベルBPで設定します。(動かすPlayerPawnでも記述できます。)

細かく見て行くと、BeginPlayで初期位置と向きを設定していて一旦位置を変数に格納してResetイベントが呼ばれたら初期値に戻すという仕様です。

次にキーのWが押されたら前進、Sが押されたら後退、Aが押されたら左、Dが押されたら右に移送する仕様です。ここで重要なのはForward(向き)を取り、ローカルで前進後退左右に移動しているという点です。

また、Z軸に左右回転とZ軸にUpDownと見上げる見下ろす処理も実装しています。

さらにこのままではゲームが終わらないのでESCキーを押されたらゲームが終了する処理も入れてます。

スプライトがプレイヤーのカメラ方向を常に向き、ふわふわ・くるくる。消えたり、現れたり

レベルにスプライト(平面)を置いて常にカメラを向く仕様を実装します。

まず、プレイヤーを作りますが

↑の手順でPawnで作成して作成したPawnのBlueprintをWクリックして開きます。

Collisionをつけてカメラもくっつけときます。collisionは当たりの判定用に使います。※追加したらコンパイルしておきましょう。

で、Blueprintsフォルダ内で右クリックしてブループリントクラスを作成して平面を置いておきます。


ブループリントクラスを作ります。クラスを作っただけで何もありません。


Actorを選択しときます。


Ghostって名前をつけました。これをWクリックして開きます。


平面を追加しておきます。


平面は回転x:90、y:0、z:-90にしておきましょう。

で、マテリアルを作ります。


できたマテリアルのBlueprintをWクリック


デフォルトはこんな感じ

こんな感じで作ります。LerpにAlphaって名前をつけてます。

Alphaの設定はこんな感じ。デフォルトは1です。

マテリアルを作ったら平面に貼ります。

こんな感じ。でこれが常にPlayerを向くようにします。

実装はこんな感じです。

ちなみにお化けなのでふわふわさせます。

こんな感じ。上下にふわふわしながらやや周回します。

まあ、これだけじゃ面白くないのでお化けに近づくとお化けが驚いて怒って逃げる(消える)ってのを実装します。

全体はこんな感じ。

詳しくはお化けのcollisionを350cmに設定しているので、playerがお化けのcollisionに触れて、お化けのダイナミックマテリアルの値が1ならテクスチャを差し替えるって事をします。

で、0.5秒後に怒った絵に差し替えて

2秒後にイベントが発生してタイムラインが動いて2秒でAlphaが0になって消えるって実装です。

ダイナミックマテリアルはコンストラクションスクリプトの中で設定しています。

で、何でAlphaが1か1以外かを見ているのかというと、消える2秒の間で再びお化けのcollisionに触れた場合に絵を差し替える処理をさせないためです。

ちなみにお化けのcollisionから出た場合は以下の処理になります。

またここでAlphaが0かどうかの判定がありますが、0なら10秒後に現れるんですが、でもお化けとPlayerの距離が350cm以上離れてないとAlphaが0から戻らないようにしています。

350cm以上はなれると再び2秒でAlphaが1に戻り姿を現します。

という感じ。

 

このアプリを動かしてみるにはこちらからダウンロードします。

キーボードの[W]で前進。[A]で左移動、[D]で右移動、[S]で後退、[Z]で左向き、[C]で右向き、[esc]で終了です。

新しく自分の作ったレベルでゲームができるように設定

新しく自分の作ったレベルでゲームができるように設定します。

まずはUE4エディタを起動しモバイルアプリでスターターパックあり(なしでもいいんですが、使えるものが多いのでありがいいかと…)

すると最初のレベルが表示されますが、これは今は使わないので「ルート」に新しいフォルダでも作って自分の作るコンテンツの名前にしてその中に「Blueprints」「Level(Map)」「Materials」「Sounds」「Textures」などわかり易い名前のフォルダを更に作ります。

まずは自分のLevelを作ります。

コンテンツブラウザ内のフォルダを開いてマウスの右クリックでメニューが出ますので「レベル」を選択して作成します。

こんな感じで何もないのでまず床など置いてみましょう。

「基本」「平面」をクリックして「平面」をドラッグしたままレベル(マップ)に置きます。右のアウトライナを見ると「Plane」が追加されてます。位置がメチャメチャなのでxyzとも0,0,0にしておきましょう。また大きさもデフォルトでは1mになってますので100mくらいにしておきましょう。(拡大縮小のところのxyを100でzは高さなのでそのまま)でも明かりがないのでまだ床も見えません。

次にライトを置いてみます。

「ライト」「ディレクショナリライト」をドラッグしてレベルにおきます。

でも何も見えないんですが、これは0,0,0の位置から床を見ているので何も見えないんです。右の「アウトライナ」の中の「Plane」をクリックして、表示中央の矢印「z軸」をクリックして少し下にずらします。そうですねz軸-100くらいにしましょうか。


すると床が見えました。

「編集」「プロジェクト設定」で「マップ&モード」で作成したレベルを設定すれば、エディタもゲームもこのレベルから始まります。

設定して一旦終了して再度エディタを起動すると作ったレベル(マップ)から始まります。