サクッとOculusジェットコースターをつくろう! その2 ~ ブループリント続編 UnrealEngine43分クッキング #UE4Study

 
スクリーンショット_011215_032804_AM

サクッとOculusジェットコースターをつくろう!2回目は、alweiさんご紹介いただいたRollercoasterPluginを使い、いよいよジェットコースターのコースを作成して走らせてみます。

前回

サクッとOculusジェットコースターをつくろう! その1 ~ はじめてのぷらぐいんUnrealEngine43分クッキング  
http://2vr.jp/2015/01/11/ue4-de-oculus-rollercoaster-1/

プロジェクトを新規に作成してRollercoasterPluginを使えるようにするところまで行いました。

環境

  • Unreal Engine 4.4.3
  • RollercoasterPlugin 4.4.1

RollercoasterPluginチュートリアル動画

今回も引き続きこちらを参考にします。(2:30-)

 

ゲームモードを作ってローラーコースターにプレイヤーを乗っける

まずはゲームモード(Game Mode)を新規に作ります。

ゲームモードについて

Unity使いのOculusコンテンツ開発者がUnrealEngine4に再々入門してみる その3 ~ ゲームモードを知る
http://2vr.jp/2015/01/03/try-ue4-3/

ゲームモードの設定を開く

ツールバーのワールド設定から、ゲームモードの設定を開きます。

無題クリップ_011115_031526_PM

ゲームモードブループリントを作る

ワールド設定のGameMode Overrideで新規をクリック。
適当な名前を指定して作ります。

各UIコンポーネントの名称について

Unreal Engine | ブループリントでゲームモードをセットアップする操作手順 
https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/SettingUpAGameMode/Blueprints/index.html

無題クリップ_011115_032515_PM

 

プレイヤーを、コースを走るカメラに差し替える

スクリーンショット_011115_033832_PMRollercoasterPluginを入れたことにより追加された RollercoasterPawnクラスブループリントをDefault Pawn Classへ、RollercoasterPlayerControllerクラスブループリントをPlayer ControllerClassへ設定します。

無題クリップ_011115_034344_PM

 

地形を作る

動画の手順通り、平らな地面、地形(テライン)を作ります。

地面、地形(テライン)の作成はUE4のランドスケープ(landscape)モードから
(Unityでは名前そのままのテライン(Terrain)と同じ)

各UIコンポーネントの名称について

Unreal Engine | レベル エディタ 
https://docs.unrealengine.com/latest/JPN/Engine/UI/LevelEditor/index.html

モードパネルでランドスケープモードへ切り替えます。

無題クリップ_011115_025303_PM

これまたとりあえず動画に言われるがまま(3:53)、地形を作成する予定の位置を下げます。

ビューポートで、Wキーを押して移動モードへ切り替え、ドラッグして上下のZ軸を下げて作成をクリック。

UnityとUnrealEngineのXYZ軸の定義について

Unityでは、X左右、Y上下、Z前後
UEでは、X前後、Y左右、Z上下

参考
Unity3D開発者がUE4を使うための入門ガイド - Let's Enjoy Unreal Engine
http://unrealengine.hatenablog.com/entry/2014/08/06/221252シーンの項を参照

無題クリップ_011115_035423_PM

まったいらな地面、テラインが完成しました。

無題クリップ_011115_035533_PM

 

ジェットコースターのコースを作る

 ジェットコースターのコースを作ります。

ここではRollercoasterPluginで追加されたスプラインツールから、ビューポート内でCtrl+左クリックでポチポチクリックして制御点を追加してコースを作っていきます。

無題クリップ_011115_103705_PM

レールを敷く初回に必要な2つの設定

レールの始点をビューポート内でCtrl+左クリックで作成した後に、始点の詳細でレールの大きさ設定。(4:30)

無題クリップ_011115_104402_PM

スクリーンショット_011115_104543_PM

2つ目の点を作成した後に、始点と2つ目の点をつなぐ線を選択してレールのモデルデータの設定を行います。

エレメントの定義を追加します。

無題クリップ_011115_105044_PM

MeshからRollercoasterPluginで追加された Track_Splineスタティックメッシュを選択

無題クリップ_011115_105244_PM

 スプラインに沿ってメッシュが生成されました。

スクリーンショット_011115_105655_PM

しかしこのままでは メッシュデータの繰り返し方向が誤っているため網みたいになっています。

ForwardAxisをX(左右)からY(前後)へ修正します。(5:20)

無題クリップ_011115_110048_PM

 3つ目以降の制御点を打つ

つなげたい制御点を選択した状態で、ビューポート内をCtrl+左クリック。

スクリーンショット_011115_111800_PM

カーブを緩やかにする

制御点を選択してRキーで回転モードへ切り替え。

無題クリップ_011115_111951_PM

ドラッグで調整。

無題クリップ_011115_112056_PM

 

 

終点と始点とつなげてループできるようにする

終点を選択した状態で視点をCtrl+左クリック

無題クリップ_011115_112354_PM

先ほどと同様に制御点を選択してRキーで回転モードへ。
制御点を回転させてカーブを緩やかにしてコース完成

無題クリップ_011115_112609_PM

 

ジェットコースターのスタート位置を設定

ゲーム開始時にプレイヤーがスタートする地点を指定する、PlayerStartゲームプレイアクタをレール上の任意の位置へ移動します。

アクタ(Actor)とは

Unreal Engine | 一般的なアクタ タイプ https://docs.unrealengine.com/latest/JPN/Engine/Actors/Types/index.html

なるほど、ピンときませんね。
(未経験者へ説明する際に、比較対象となるものがなくて???となるこの気持ちを忘れないようにしよう・・。と思うのであった。)

UE4 C++コードをブループリントで使えるようにする(アクタークラス編) - Let's Enjoy Unreal Engine
http://unrealengine.hatenablog.com/entry/2014/09/13/162126

UnityでいうGameObjectの事、かな・・?
ゲームオブジェクトは様々なコンポーネント(TransformやMeshやScript)を複数持ち、シーン中での役割が決定される。というニュアンスで
ただ、UnityとUE4とではシーンのつくり方が異なるので、全く同じ概念で考えることはできなさそう。

一度ランドスケープモードを抜けてPlaceモード(Shift+1)へ切り替え

無題クリップ_011115_115155_PM

PlayStartアクタを選択してレールの上へドラッグ

無題クリップ_011115_115332_PM

ビューポートの視点を変えてレーンに接するように調整。正面の方向を進行方向へ回転。

スクリーンショット_011215_120024_AM

 

いよいよ実行!でも動かない?

チュートリアル動画では、ここで再生を押すと自動的に走り出します。(6:56)

しかしRollercoasterPluginのバージョン4.4.1からは自動的にスタートしないよう変更になったようです。

自動的に動かすには?

実行中にRollercoasterPlayerControllerを選択して、詳細パネルからPlayer ControllerのStoppedをON→OFFへ。Climbing(上昇)をOFF→ONへチェックを入れ変えると動きます。

スクリーンショット_011215_024854_AM

スクリーンショット_011215_024748_AM

ブループリントから制御する

オブジェクトの詳細パネルの設定値をブループリントから設定します。

ブループリントに設定する内容

1. 「Get Player Controller関数」
 シーン開始時に生成(インスタンス化)されたプレイヤーのオブジェクトを取得する。
→ゲームモードのPlayerControllerで指定したプレイヤーのクラスブループリント

2. 「RollercoasterPlayerControllerへキャストする」
今回のターゲットはPlayerControllerクラスを継承したRollercoasterPlayerControllerなのでダウンキャストする。

3. 「SET」
ターゲットのクラスが持つ変数へ任意の値を設定する
→ 右のパレットからターゲットのクラスを検索。下にそのクラスの持つ変数が一覧表示されるので、設定対象の変数をグラフエディタのグラフエリアへドラッグ

UIの名称について

Unreal Engine | グラフ エディタ タブ https://docs.unrealengine.com/latest/JPN/Engine/Blueprints/Editor/UIComponents/GraphEditor/index.html

以下のどちらかの対応で自動的にコースターが動き出します。

a. レベルブループリントで設定する場合

スクリーンショット_011215_025554_AM

 トリガーをBegin Playからいずれかのキーにすることにより、実際のOculus体験会ではオペレーションしやすい感じに作ることもできそうです。

b. RollercoasterPawnクラスブループリントで設定する場合

スクリーンショット_011215_031722_AM

次回につづく

サクッとOculusジェットコースターをつくろう! その3 ~ オープンソースなUE4Rollercoasterのレベルブループリントを読む。 UnrealEngine43分クッキング
http://2vr.jp/2015/01/13/ue4-de-oculus-rollercoaster-3/

ブループリント関連記事

Unity使いのOculusコンテンツ開発者がUnrealEngine4に再々入門してみる その4  ~ ブループリント編
http://2vr.jp/2015/01/04/try-ue4-4/