UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 見たら消えるオブジェクトを作ってみる

タイトル通りのものを作っていきます。

 

プレイヤーからLine Traceを飛ばし、

その衝突時に特定のオブジェクトが衝突していれば、

オブジェクトを削除するというものです。

 

ミニゲームくらいなら作れそうですね。

www.youtube.com

 

準備

今回はUE4 4.15.0を使用します。

f:id:MozPaca:20170315130426p:plain

 

First Personテンプレートでプロジェクトを作成してください。

 

 

Line Traceを出せるようにしてみる

まずはプレイヤーの処理から書いていきましょう。

First Person BP / Blueprintsから

First Person Characterのブループリントを開いてください。

f:id:MozPaca:20170315131115j:plain

 

移動処理や、弾を発射する処理など書かれていますが、

それとは別に、このような処理を書いてください。

f:id:MozPaca:20170315131335j:plain

Event TickからLine Trace By Channelへ繋いでいます。

LineTraceの開始座標はFirst Person Cameraのワールド座標。

終了座標はFirst Person CameraのGet Forward Vector

Line Traceの長さを乗算したものとFirst Person Cameraの

ワールド座標を加算した値です。

 

このLine Traceはプレイヤーの視線を判定するものです。

Line Trace By Channelを使用していますが、

Sphere Traceでも可能ですので好きな方を使ってください。

 

ここまで処理を書いたら実行して確認してみましょう。

f:id:MozPaca:20170315132250j:plain

このようにカメラからLine Traceが出ていると思います。

もし出ていない場合はLine Trace By Channelの

Draw Debug TypeをFor Durationに変え忘れていないかなどを

確認してみてください。

 

発見用のオブジェクトを作成する

次に発見用のオブジェクトを作成します。

 

コンテンツブラウザから右クリック

Blueprint Classを選択してください。

f:id:MozPaca:20170315141501j:plain

 

親クラスはActorで作成します。

f:id:MozPaca:20170315141618j:plain

 

作成できたらファイル名をBP_Targetとしましょう。

f:id:MozPaca:20170315141641j:plain

 

BP_Targetを開いてください。

 

左上のAdd Componentから

Box Collisionを追加します。

f:id:MozPaca:20170315141809j:plain

 

同じようにAdd ComponentからCubeを追加します。

f:id:MozPaca:20170315141818j:plain

Cubeでなくても構いません。

Static MeshやSkeletal Meshでも大丈夫です。

今回は見た目を気にせず分かりやすさ重視でCubeを選択しました。

Cube以外を使う場合にはBox CollisionもMeshの形に合わせて変更してください。

 

Cubeの大きさに合わせてBox Collisionの大きさを変更します。

f:id:MozPaca:20170315141826j:plain

 

Collision Typeの変更をします。

CubeをNo Collisionにしてください。

Box Collisionは下記の画像のようにしてください。

Line Traceの判定をとるためにVisiblityが

Blockであれば他は自由に変更して大丈夫です。

f:id:MozPaca:20170315142257j:plain

 

Material Functionを作成する

消滅時に発生するエフェクトをマテリアルで表現しましょう。

細かい処理などは過去記事を見てください。

mozpaca.hatenablog.com

 

コンテンツブラウザから右クリック

Material Functionを選択してください。

f:id:MozPaca:20170315150432j:plain

 

ファイル名をMFunc_Dissolveとします。

f:id:MozPaca:20170315150556j:plain

 

過去記事にも同じものを挙げていますが、

解像度が低くて見づらいという声が多かったため、

解像度の高いものを用意しました。

 

Appear Timerの値に合わせてNoiseの形に透過していく処理です。

全体図の方

f:id:MozPaca:20170315150631j:plain

 

全体図じゃない方

f:id:MozPaca:20170315163424j:plain

f:id:MozPaca:20170315163435j:plain

f:id:MozPaca:20170315163444j:plain

 

Noiseのパラメータはこのようになっています。

f:id:MozPaca:20170315150740j:plain

 

マテリアルに処理を書く

Cube MeshにはBasic Shape Materialという

マテリアルがDefaultで適応されています。

先ほど作成したMFunc_Dissolveを

このBasic Shape Materialに適応しましょう。

 

Engine Contents / Basic Shapeから

Basic Shape Materialを開いてください。

f:id:MozPaca:20170315151114j:plain

 

終結果のパラメータのBlend Modeを
Maskedに変更します。

f:id:MozPaca:20170315153232j:plain

 

Material Function CallでMFunc_Dissolveを呼び出し、

Emissive ColorとOpacity Maskを最終結果に繋ぎます。

f:id:MozPaca:20170315153118j:plain

 

Material Instanceを作成する

コンテンツブラウザに戻り、

Basic Shape Materiaを右クリックし、

Create Material Instanceをクリックしてください。

f:id:MozPaca:20170315153343j:plain

 

Material Instanceを作成しました。

(色が違うのはスクショを撮り忘れて後で撮ったからです)

f:id:MozPaca:20170315153526j:plain

 

作成したMaterial Instanceを開いてください。

パラメータを画像のように変更します。

f:id:MozPaca:20170315153734j:plain

 

BP_TargetのCube Meshのマテリアルを作成した
Material Instanceに変更しましょう。

f:id:MozPaca:20170315153914j:plain

 

発見用オブジェクトの処理を書く

BP_Targetの編集を行っていきます。

BP_Targetを開いてください。

f:id:MozPaca:20170315154239j:plain

 

Construction Scriptにこのような処理を書きます。

CubeコンポーネントのマテリアルをDynamic Material Instanceとして

作成し、DMIという変数に格納しています。

f:id:MozPaca:20170315154311j:plain

 

イベントグラフの処理です。

Custom Eventを作成し、Meltという名前を付けます。

作成したCustom EventからTime Lineへ繋ぎ、

DMIのパラメータを変更する処理を書きます。

Time Lineが終了したらDestroy Actorに繋ぎ、

BP_Targetを削除します。

f:id:MozPaca:20170315154432j:plain

 

Time Lineの中身です。

0秒時に値を1

2秒時に値を0

とする直線のTime Lineです。

f:id:MozPaca:20170315154632j:plain

 

これでBP_Targetの処理はすべて書き終わりました。

 

Clear Widgetを作成する

なくても困らないですが、

動画で出していたクリア時のWidgetを作成します。

 

コンテンツブラウザから右クリック

User Interface / Widget Blueprintを選択してください。

f:id:MozPaca:20170315155534j:plain

 

名前をWidget_GameClearとします。

f:id:MozPaca:20170315155612j:plain

 

Widget_GameClearを開いてください。

 

Textを一つ配置し、適当な文字とサイズにします。

f:id:MozPaca:20170315155707j:plain

 

これだけ

 

プレイヤーの処理を追加する

最後の工程です。

プレイヤーに処理を書きます。

First Person Characterを開いてください。

f:id:MozPaca:20170315131115j:plain

 

Line Traceの処理を書いた箇所に

下記の画像のように処理を追加してください。

Line TraceのDuration TypeをNoneに戻すのも忘れずに。

f:id:MozPaca:20170315155041j:plain

レベル上にBP_Targetが残っているかの判定を行い、

残っていればLine Traceを飛ばし、Line Traceの衝突した

ActorがBP_TargetであればBP_TargetのMelt関数を呼び出します。

BP_Targetがレベル上に残っていなければ、

Widget_Clearを描画します。

 

これで処理はすべて書きました。

実行して確認してみてください。

ページ上部の動画のようになります。

Oculus Rift CV1とOculus Touchをセットアップしてみる

先日Oculus Rift CV1とOculus Touchが届きました。

f:id:MozPaca:20170304232806j:plain

 

なんていうか箱がかっこいいです。
DK-2の頃のダンボール感あふれる箱も

嫌いではなかったのですが、

今回の箱は高級な感じがします。

(ただ大きいので持ち運びはどうするか検討中)

 

中身を確認する

Oculus Rift CV1の方の中身はこんな感じです。
HMD本体

・Oculus Remote

・ポジショントラッカー

・説明書兼保証書

Xbox Oneのコントローラー

XboxコントローラーのUSBケーブル

Xboxコントローラーの説明書

・Oculusのシール2枚

・レンズグロス(メガネ拭きのアレ)

f:id:MozPaca:20170304234437j:plain

 

Oculus Touchの方の中身はこんな感じです。

・Touchコントローラー2個

・ポジショントラッカー

・RockbandVR用の固定具

・説明書兼保証書

・単三電池2個

f:id:MozPaca:20170304235037j:plain

 

本題

セットアップをやっていきたいと思います。

 

公式のスタートガイドもあります。

https://product-guides.oculus.com/en-us/documentation/rift/latest/concepts/book-rgsg/

きちんとセットアップをしたい方は

こちらを読んだ方がいいと思います。

 

セットアップツールを入手する

こちらのサイトからセットアップツールをダウンロードしましょう。

Oculus Rift Setup | Oculus

 

Start Downloadのボタンをクリックすると

ツールのダウンロードが始まります。

f:id:MozPaca:20170304233356g:plain

 

ダウンロードが完了後、

ダウンロードしたOculusSetup.exeを開きます。

 

Oculus Softwareのダウンロードをする

OculusSetup.exeを開くとこんな画面になると思います。

現時点では日本語がないため、英語のままLet's Goのボタンをクリックします。

f:id:MozPaca:20170304233906g:plain

 

プライバシーポリシーの同意画面です。

Agreeを選択してください。

f:id:MozPaca:20170304234402g:plain

 

健康と安全についての注意事項です。

この画面では10秒間待機した後に

次に進めることができます。
カウントダウンが表示されているボタンが

押せるようになったら次へ進んでください。

f:id:MozPaca:20170305000138g:plain

 

アプリケーションを保存するパスの設定です。

特に理由がなければデフォルトのままでいいでしょう。

f:id:MozPaca:20170305000434g:plain

 

Oculus Softwareのインストール画面です。
Install Nowのボタンをクリックするとインストールが始まります。

f:id:MozPaca:20170305000909g:plain

 

インストールを開始するとこの画面になります。

少しの間待機しましょう。

f:id:MozPaca:20170305001519g:plain

 

イントールが完了しました。

Nextのボタンをクリックし、次の画面へ進んでください。

f:id:MozPaca:20170305001437g:plain

 

Oculusアカウントを持っていない方は右下のCreate Accountをクリックし、

Oculus Accountを作成してください。

私はOculus Accountを持っていたため左下のSign Inをクリックし、

サインインしました。

f:id:MozPaca:20170305001924g:plain

 

Oculus Rift CV1とOculus Touchのセットアップを行う

次にセットアップする機材を選択します。

今回はCV1とOculus Touchのセットアップを行うので、

Rift and Touchを選択し、Nextをクリックします。

f:id:MozPaca:20170305002356g:plain

 

Nextをクリックしてください。

f:id:MozPaca:20170305002904g:plain

 

HMDとセンサーをUSB3.0に挿してください。

f:id:MozPaca:20170305003246g:plain

 

全て挿し終えるとステータスのところに
チェックマークが入りOKと出ます。

この状態になったらNextをクリックしてください。

f:id:MozPaca:20170305003840g:plain

 

Oculus Remoteのセットアップを行う

一応Skipすることもできます。

f:id:MozPaca:20170305004154g:plain

 

右の図の通りに操作をするとステータスのところに

チェックが入りOKと出ます。

この状態になったらNextをクリックしてください。

f:id:MozPaca:20170305004326g:plain

 

Oculua Remoteの説明が表示されます。

Continueボタンをクリックして次に進みましょう。

f:id:MozPaca:20170305004444g:plain

 

Xbox Oneのコントローラーのセットアップを行う

f:id:MozPaca:20170305004512g:plain

 

無線化も出来るようですが、受信機を持っていないため、

Xbox OneのコントローラーをUSBでPCに繋げました。

Continueボタンをクリックして次に進めます。

f:id:MozPaca:20170305004631g:plain

 

接続が確認されたらチェックマークとOKの表示が出るので、

Nextボタンを押します。

f:id:MozPaca:20170305004709g:plain

 

Xbox Oneのコントローラーの説明が表示されます。

Continueボタンをクリックして次へ進んでください。

f:id:MozPaca:20170305004902g:plain

 

Oculus Touchのセットアップを行う 

Oculus Touchに電池を入れてくださいと表示されます。

電池を入れて。Nextボタンを押してください。

f:id:MozPaca:20170305004930g:plain

 

Oculus Touch側面のカバーをうまいこと外し、

中に単三電池を入れてください。

f:id:MozPaca:20170305005237j:plain

 

単三電池はOculus Touchの箱のここに入っています。

(私は気づかず買いに行きました)

f:id:MozPaca:20170305005252j:plain

 

左手用のTouchをセットアップします。

TouchのメニューボタンとYボタンを2秒ほど押し続け、

ペアリングを行います。

画像のようになったら、Nextボタンで次へ進んでください。

f:id:MozPaca:20170305005039g:plain

 

同様に右手のTouchもセットアップします。

OculusボタンとBボタンを2秒ほど押し続けてください。

画像のようになったらNextボタンを押します。

f:id:MozPaca:20170305005108g:plain

 

Oculus Touchの操作説明です。

Nextボタンを押してください。

f:id:MozPaca:20170305005124g:plain

 

ファームウェアのアップデートを行う

Update Nowのボタンをクリックしてください。

f:id:MozPaca:20170305005205g:plain

 

しばらく待機しアップデートが終わるのを待ちます。

f:id:MozPaca:20170305005310g:plain

 

アップデートが完了したら、

Continueボタンをクリックしてください。

f:id:MozPaca:20170305005411g:plain

 

私はここでエラーが出てしまったので、

Try Againをクリックし、

Oculus Touchのセットアップからやり直しました。

f:id:MozPaca:20170305005431g:plain

 

 センサーのセットアップを行う

f:id:MozPaca:20170305005629g:plain

 

USB3.0で接続しましょう。

チェックマークとOKの表示が出たら、

Nextボタンをクリックします。 

f:id:MozPaca:20170305005709g:plain

 

センサーに付いているフィルムを剥がし、

Nextボタンをクリックします。

f:id:MozPaca:20170305005925g:plain

 

立っている場所から目の高さまでの距離を入力します。

入力が終わったらNextボタンをクリックしてください。

f:id:MozPaca:20170305010005g:plain

 

広さを確保して

Nextボタンをクリックしてください。

f:id:MozPaca:20170305010249g:plain

 

センサーを1~2メートルの間隔で設置してください。

私の環境では1メートル少し足りないくらいの距離で設置していますが、

今のところ特に問題ありません。

f:id:MozPaca:20170305010302g:plain

 

ラッキングのセットアップを行う

Nextボタンを押してください。

f:id:MozPaca:20170305010343g:plain

 

この円形の範囲内で目の高さにTouchを持っていき、

トリガーを2秒ほど押し続けてください。

f:id:MozPaca:20170305010511g:plain

 

うまい具合に設置して、Nextボタンをクリックしてください。

f:id:MozPaca:20170305010606g:plain

 

次にVR空間内の壁作りをします。

狭い場所に設置している方は、丁寧にやった方が

リアルの壁に手をぶつけることもなくなると思います。

f:id:MozPaca:20170305010859g:plain

 

私は適当にしました。

Continueボタンをクリックしてください。

f:id:MozPaca:20170305010914g:plain

 

I Understandボタンをクリックして

注意事項に同意しましょう。

f:id:MozPaca:20170305010934g:plain

 

Oculus Rift CV1のセットアップを行う

Nextボタンをクリックしてください。

f:id:MozPaca:20170305010950g:plain

 

説明が表示されます。

Nextボタンをクリックしてください。

f:id:MozPaca:20170305011010g:plain

 

自分に合わせてベルトなどを調節しましょう。

割りと深めに被った方が安定感があります(個人的に) 

Nextボタンをクリックしてください。

f:id:MozPaca:20170305011027g:plain

 

私はLens Soacingを65mmに設定しました。

Nextボタンをクリックしてください。

f:id:MozPaca:20170305011041g:plain

 

被っていたらチュートリアル的なのが始まります。

f:id:MozPaca:20170305011056g:plain

 

セットアップ終わり。 

 

UE4で動かしてみる

セットアップが終わったので、UE4上で動作するか確認しました。

リアルなレンダリングのプロジェクトを開き、

VRプレビューで見てみます。

f:id:MozPaca:20170305211559g:plain

映りました。

 

簡単過ぎて涙が出てくる。

 

Oculus Touchの方は確認してませんが、

近いうちにまた記事にしたいと思います。

UE4 地面の種類を判別して足音を再生する

UE4の足音の再生に関しては

たくさんの方がブログなどに既に書かれていますが、

私が普段書いている処理を少し書きたいと思います。

 

詳しい処理の内容が知りたい方はこちら

pafuhana1213.hatenablog.com

 

ではやっていきます。

 

準備

今回はUE4 4.14.3を使用します。

f:id:MozPaca:20170128012413p:plain

 

プロジェクトを作成し、

Third Personテンプレートで起動します。

 

使用するファイルはこちらです。

f:id:MozPaca:20170130114239p:plain

f:id:MozPaca:20170130114250p:plain

f:id:MozPaca:20170130114300p:plain

同じ種類の地面につき8種類の音声ファイルを用意しました。

 

わかりやすい地面を作成する

※これはしなくていい作業です。

 ブログを見やすくするために作成しました。

 

BSPを適当なサイズでStatic Meshにし、

適当なCollisionをつけています。

f:id:MozPaca:20170130120019p:plain

 

そして、適当に並べてStarter Contentsの中にあった

それっぽいマテリアルを適応します。

f:id:MozPaca:20170130120103p:plain

左から「土」「フローリング」「水溜まり」です。

 

Sound Cueファイルを作成する

Sound Cueファイルはこんな感じになっています。

f:id:MozPaca:20170130114836p:plain

 

地面の種類に応じて8種類の音からランダムで選択再生します。

f:id:MozPaca:20170130114858p:plain

 

Randomノードの先には

Int Parameter 「GroundType」を持った

Switchノードがあります。

このノードで次のPhysical Surfaceと紐づけをします。

f:id:MozPaca:20170130115006p:plain

 

Physical Surfaceを設定する

Project設定を開き、左側のPhysicsを選択します。

そのページの下の方にあるPhysical Surfaceの設定を行います。

Surface Typeに判別したい地面の種類を書き込んでいきます。

f:id:MozPaca:20170130115153p:plain

Sound CueのSwitchノードにつないだ、

音と同じ順番になるように記述してください。 

 

Physical Materialを作成する

コンテンツブラウザを右クリック

Physics→Physical Mterialを選択します。

f:id:MozPaca:20170130120329p:plain

 

Physical Materialを選択し、Selectを押します。

f:id:MozPaca:20170130120443p:plain

 

Physical Materialを必要分作成し、

それぞれこのような名前をつけました。

f:id:MozPaca:20170130120541p:plain

 

Physical Materialを開き、先ほどProject設定で

作成したSurface Typeを適応していきます。

f:id:MozPaca:20170130120530p:plain

PM_WoodならWood、

PM_WaterならWaterという感じです。

 

作成したPhysical Materialをそれぞれの地面に設定します。

レベルに配置してあるMeshを選択し、

Phys Material Overrideに適応したいPhysical Materialを設定します。

f:id:MozPaca:20170130120826p:plain

 

処理を書く

私自身サウンド部分を担当することは多いですが、

再生部分の実装はあまり行わないので

今回はFunction Libraryを使用して処理を書きます。

 

コンテンツブラウザを右クリック

Blueprints→Function Libraryを選択します。

 

作成したFunction Libraryを開き

PlayFootStepという関数を新規追加します。

 

処理の全体図です。

もう少し短縮できると思うのですが、

今回はこれで行きます。

f:id:MozPaca:20170130121846p:plain

 

引数にPawn OwnerというActor型の変数を用意しています。

引数から得たActorのLocationを取得し、足元の判定範囲を

Line Traceに流しています。

f:id:MozPaca:20170130121940p:plain

デバッグ用にLine Traceを視覚化しています。

 

そのLine TraceのHit判定を利用し、足元のPhysical Materialを検出します。

Physical Materialが検出できたら、ActorのRoot Conponentに

足音用のSound CueをAttachします。

f:id:MozPaca:20170130122541p:plain

 

Selectノードはひし形の部分を右クリックし、

Change Pin Typeを選択します。

f:id:MozPaca:20170130123107p:plain

 

ここでIntegerを選択して下さい。

f:id:MozPaca:20170130123159p:plain

 

すると上のスクリーンショットと同じ形になります。

f:id:MozPaca:20170130123227p:plain

 

AttachしたSound Cueの中にあるGround Typeを変更します。

その後Play Sound For Data TableでSound Cueを再生します。f:id:MozPaca:20170130122217p:plain

 

Play Sound For Data Tableについては

過去記事を参照してください。

mozpaca.hatenablog.com

 

これで実装部分の処理は完了です。

 

アニメーションの通知設定を行う

実装部分の処理は書いたので、

次は呼び出し処理の準備を行います。

 

Third Person Runというアニメーションを開いてください。

f:id:MozPaca:20170130123333p:plain

 

先ほどの関数の呼び出しには

Anim Notifyを使用します。

 

アニメーション中の足が丁度地面に着くぐらいの

ところにAdd Notify→New Notifyを選択し

FootStepという名前の通知を追加します。

f:id:MozPaca:20170130123523p:plain

 

通知が追加されると、こんな感じになると思います。

f:id:MozPaca:20170130123806p:plain

 

このアニメーションには2回足が地面に着くので、

もう一方の方にも通知を追加します。

f:id:MozPaca:20170130123912p:plain

 

呼び出し処理を書く

Third Person AnimBPを開いてください。

f:id:MozPaca:20170130124033p:plain

 

アニメーションブループリントの

イベントグラフにEvent AnimNotify_FootStepを追加します。

f:id:MozPaca:20170130124128p:plain

 

Event AnimNotify_FootStepが追加できたら、

作成した関数のPlayFootStepを呼び出します。

関数の引数には、Try Get Pawn Ownerから

取得できる情報を渡しましょう。

f:id:MozPaca:20170130124227p:plain

 

これでアニメーション通知を作成したところで

サウンドが再生されます。

 

確認してみる

Physical Materialを適応した箇所で

指定したサウンドがなっていると思います。

www.youtube.com

UE4 4.14.3でフリーズしてしまう対処法

私の環境ではUE4 4.14.3で

ブループリントエディタやスケルタルメッシュを開くと

必ずフリーズしていました。

 

フリーズはしないけど、UE4エディタを

軽くしたいという方はこちらを参考にしてください。

unrealengine.hatenablog.com

 

実際はある方に解決策を教えていただいたのですが、

いくつかの対策を試してみましたので、

物忘れの激しい私のメモとして書いておきたいと思います。

 

私の環境

MacBookboot camp windowsを入れて、使っています。

f:id:MozPaca:20170129235124p:plain

f:id:MozPaca:20170129235136p:plain

お世辞にもUE4を動かすのに適した環境とは言えませんが、

4.13より前は拡張機能設定がEpicでも普通に動いていました。

(FPSは落ちていましたが...)

 

DerviedDataCacheを削除してみる

詳しくはこちらをご覧ください。

unrealengine.hatenablog.com

 

フリーズし始めたころにboot camp

クリーンインストールしたばかりなので、

キャッシュは溜まっていなかったのですが

一応やってみました。

f:id:MozPaca:20170130000728p:plain

このDerivedDataCacheをフォルダごと削除します。

 

AppDataは隠しファイルになっています。

AppDataが見つからないという方は

エクスプローラーの表示から隠しファイルにチェックを

入れると見えるようになると思います。

f:id:MozPaca:20170130000849p:plain

 

IMEを切り替えてみる

Answer hubを漁っているとこのようなページを見つけました。

Microsoft IME 2010を使用しているとBlueprintのコンパイルが異常に遅くなる - UE4 AnswerHub

 

このページではフリーズするとは書いていないものの、

動作が全体的に遅くなるというのは、

共通してたので試してみました。

 

Microsoft IMEがアクティブだと重くなってしまうようなので、

その他のIMEを入れてみます。

 

英語キーボードの設定を行います。

Windowsの設定を開きます。

2段目の左から2個目の時刻と言語を選択します。

f:id:MozPaca:20170130002906p:plain

 

左側のタブから地域を言語を選択し、

右側の言語タブから言語を追加するを選択します。

f:id:MozPaca:20170130003006p:plain

 

Englishを選択します。

f:id:MozPaca:20170130003357p:plain

 

一番下にEnglish(United States)があるので

これを追加します。

f:id:MozPaca:20170130003437p:plain

 

これで、IMEを切り替えれば

英語キーボードになると思います。

 

当然日本語は打てなくなりますので、

日本語を使いたいという方は

英語キーボードではなくGoogle 日本語入力IME

おすすめします。

 

こちらのページからGoogle 日本語入力IMEをダウンロードしてください。

www.google.co.jp

 

それぞれの設定が終わったら、

Windowsキー + スペースキーでIMEの切り替えを行います。

 

UE4の起動中にIMEMicrosoft IMEに切り替えると、

フリーズしてしまうようなので要注意です。

 

まとめ

とりあえず、私の環境では

IME英語キーボードにすることで

フリーズを回避できています。

 

ただ、コメントなども英語でしか

打てなくなってしまっているので

早めに対策されることを願っています。

UE4 銃の弾が壁などに衝突した際の弾痕を実装する

現実の世界では銃弾が壁に当たると

ちょっと削れますよね?

 

今回はその弾痕の処理を実装します。

 

参考にしたサイトはこちら

gametukurikata.com

 

ベクトルの計算を使用していますが、

こちらのサイトに詳しく解説されています。

qiita.com

 

ではやっていきます。

 

準備

UE4 4.13.3を使用します。

f:id:MozPaca:20170128012413p:plain

 

FPSテンプレートでプロジェクトを作成してください。

f:id:MozPaca:20170128012508p:plain

 

使用する弾痕のテクスチャを用意します。

f:id:MozPaca:20170128073105p:plain

※256x256の.pngです。

 

テクスチャを用意したら、

プロジェクトにインポートしてください。

f:id:MozPaca:20170128073405p:plain

(鮮やかだなぁ...もっと暗い色にすればよかった)

 

必要なものを揃える

読み込んだテクスチャを右クリックします。

Sprite Actions→Create Spriteを選択してください。

f:id:MozPaca:20170128073505p:plain

 

Spriteが作成されます。

f:id:MozPaca:20170128073629p:plain

 

次に弾痕用のブループリントを作成します。

コンテンツブラウザを右クリック→Blueprint Classを選択します。

f:id:MozPaca:20170128073809p:plain

 

親クラスはActorを選択します。

f:id:MozPaca:20170128073916p:plain

 

作成したブループリントを開いてください。

f:id:MozPaca:20170128074001p:plain

 

まずはコンポーネントを追加します。

左上の方にあるAdd Componentから

Paper Spriteを追加してください。

f:id:MozPaca:20170128074137p:plain

(Spriteと入力して出てくる下の方です)

 

追加したPaper Spriteを選択し、

パラメータを変更していきます。

Source Spriteに先ほどインポートしたテクスチャを入れます。

f:id:MozPaca:20170128074322p:plain

 

少しテクスチャが大きいので、Scaleを0.1にします。

RotationのZ軸を90にします。

f:id:MozPaca:20170128074444p:plain

 

弾痕自体にはCollisionも不要なので

Block AllからNo Collisionに変更しておきます。

f:id:MozPaca:20170128074458p:plain

 

これで必要なものは揃いました。

 

処理を書く

まずは角度が取れているかを確認します。

FPSテンプレートに入っている

First Person Projectileを開いてください。

f:id:MozPaca:20170128074839p:plain

 

弾の衝突座標から衝突面に垂直な

長さ90のLine Traceを出します。

f:id:MozPaca:20170128074948p:plain

※確認用の処理です。弾痕を描画するだけなら、この処理は必要ありません。

 

このように衝突した平面から垂直なLine Traceが

確認できると思います。

www.youtube.com

 

次に描画するための処理を書いていきます。

先ほどのLine Traceの処理は削除しています。

f:id:MozPaca:20170128075441p:plain

Hit Locationから単に弾痕のブループリントを生成するだけでは、

オブジェクトにテクスチャが埋まってしまいます。

そこで、Hit Locationからカメラの向きベクトルを引くことで

少しだけ手前に生成しています。

 

RotationはLine Traceの処理で実装したVectorの処理を

Rotationで扱っているだけです。

 

これで一応描画はできるのですが、

弾痕がいつまでも残ってしまうので、

最後にBP_BreakEffectに処理を追加します。

f:id:MozPaca:20170128074001p:plain

 

これだけです。

生成されて5秒後に消える処理です。

f:id:MozPaca:20170128080007p:plain

 

以上で処理は終了です。

 

確認してみる

どの角度でも衝突相手の平面に張り付いて見えると思います。

www.youtube.com

 

※Spriteを少しいじったので

 上記の画像より暗く見えるのはそのためです。

 

余談

銃を連射しているのは前回のブログと

同じプロジェクトを使用しているからです。

参考までにどうぞ。

mozpaca.hatenablog.com

UE4 FPSテンプレートの銃を連射してみる

個人的な話になりますが、私は単発銃より

高レートで連射できる銃の方が好みです。

 

First Personテンプレートの銃...単発じゃないか!

 

というわけで、今回はあまり手間をかけずに

FPSテンプレートの銃を連射できるようにしたいと思います。

 

準備

今回はUE4 4.13.3を使用します。

f:id:MozPaca:20170128012413p:plain

 

適当なFPSテンプレートを作成してください。

f:id:MozPaca:20170128012508p:plain

 

処理を書く

First Person Character BPを開きます。

f:id:MozPaca:20170128012814p:plain

 

銃弾を生成する部分の全体図です。

f:id:MozPaca:20170128012917p:plain

コメントを消して、Touch関連のノードを削除していますが、

95%くらいテンプレートのままです。

 

変更した箇所を順番に見ていきます。

 

変数を一つ作成します。

f:id:MozPaca:20170128013201p:plain

銃のトリガーを引き継づけているかのフラグです。

 

InputAction Fireのすぐ隣にこのような処理を組みます。

一度Pressedに入るとReleasedに入るまで、

フラグをTrueのままにしておく処理です。

f:id:MozPaca:20170128013310p:plain

 

Branchの後には、テンプレートに最初から書かれている

Montage Play→Spawn Actor→Play Sound At Locationと

流れています。

 

Play Sound At LocationのあとにDelayを書きます。

このDelayは連射間隔を制御するものです。

0に近いほど高速で連射します。

f:id:MozPaca:20170128013612p:plain

Delayを最初の方に書いたBranchと繋げ

処理は完了です。

 

次に弾の方も少し変更したいと思います。

First Person Projectileを開いてください。

f:id:MozPaca:20170128013903p:plain

デフォルトでは弾が大きいので、

MeshのSphereをx,y,zすべて、

0.05にしました。

 

ブループリントはテンプレートに書かれている

Event HitとDestory Actor以外を削除し、

このように書いてください。

f:id:MozPaca:20170128014018p:plain

弾が何かに当たると当たった物のログを表示し、

消滅するという処理です。

 

以上で完成です。

 

挙動を見てみる

うまくいけばこのように、

少しの処理で連射できる銃を作成することができます。

www.youtube.com

※Meshの描画がおかしいのは気にしないでください。

私の環境の悲しみスペックPCはUE4を動かせるのか

前のブログにも書きましたが、

諸事情により今まで使っていたPCが

消滅しました。

 

このままではブログが書けない!

あと色々支障が出る!

ということで、諸事情の際に

売値がつかず放置していたPCを

クリーンインストールして使ってみます。

 

結論から言いますと動きませんでした。

それでも、もし動かせたら面白いよねとか思いながら、

スクショを撮ったので書くだけ書きます。

 

私のPCのスペック

公式が謳っている推奨スペックがこちら

f:id:MozPaca:20170124013538p:plain

 

そして私のPCのスペック

f:id:MozPaca:20170124012720p:plain

f:id:MozPaca:20170124012703p:plain

f:id:MozPaca:20170124012736p:plain

思わずため息が出ました。

 

まぁ今はこのPCしかないし...

頑張ってほしいところです。

 

UE4をインストールする

f:id:MozPaca:20170124013451p:plain

この画面を久しぶりに見た気がしました。

 

f:id:MozPaca:20170124013632p:plain

Launcherのインストール自体は割と早く終わりました。

この勢いに乗ってエンジンもサクッとインストールします。

 

しました。

f:id:MozPaca:20170124013716p:plain

2時間くらいかかりました。

 

UE4を立ち上げてみる

なんやかんやで、インストールも無事終わり、

立ち上げてみます。

f:id:MozPaca:20170124013931p:plain

遅いっ!

 

一人称視点のテンプレートを立ち上げました。

比較用に今のFPSを見たいと思います。

f:id:MozPaca:20170124014138p:plain

 

・・・ふむ

f:id:MozPaca:20170124014328p:plain

FPSが2しかありません。

初めて見た気すらします。

この段階で無理が見えてきました。

 

ひとまず、いろいろ軽量化を図ります。

f:id:MozPaca:20170124014546p:plain

拡張機能の設定がEpicになっていたので

これを低に落とします。

 

アンチエイリアスを切ります。

 

マテリアル品質レベルを下げます。

 

描画レベルをモバイル向けにします。

 

PCの解像度を多少下げます。

 

 

これでマシになっていることを祈りつつ、

再びFPSを確認します。

f:id:MozPaca:20170124014902p:plain

これは酷い・・・

 

まだ試していない軽量化がありますが、

PCがフリーズしたので、

ここで検証を終了します。

 

まとめ

・私のPCではUE4は動かない。

 

VRもやりたいので、

早急にVRReadyを確保する必要がありそうです。

・・・泣きそう。