サクッと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/
ゲームモードの設定を開く
ツールバーのワールド設定から、ゲームモードの設定を開きます。
ゲームモードブループリントを作る
ワールド設定のGameMode Overrideで新規をクリック。
適当な名前を指定して作ります。
各UIコンポーネントの名称について Unreal Engine | ブループリントでゲームモードをセットアップする操作手順 https://docs.unrealengine.com/latest/JPN/Gameplay/HowTo/SettingUpAGameMode/Blueprints/index.html
プレイヤーを、コースを走るカメラに差し替える
RollercoasterPluginを入れたことにより追加された RollercoasterPawnクラスブループリントをDefault Pawn Classへ、RollercoasterPlayerControllerクラスブループリントをPlayer ControllerClassへ設定します。
地形を作る
動画の手順通り、平らな地面、地形(テライン)を作ります。
地面、地形(テライン)の作成はUE4のランドスケープ(landscape)モードから
(Unityでは名前そのままのテライン(Terrain)と同じ)
各UIコンポーネントの名称について Unreal Engine | レベル エディタ https://docs.unrealengine.com/latest/JPN/Engine/UI/LevelEditor/index.html
モードパネルでランドスケープモードへ切り替えます。
これまたとりあえず動画に言われるがまま(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→シーンの項を参照
まったいらな地面、テラインが完成しました。
ジェットコースターのコースを作る
ジェットコースターのコースを作ります。
ここではRollercoasterPluginで追加されたスプラインツールから、ビューポート内でCtrl+左クリックでポチポチクリックして制御点を追加してコースを作っていきます。
レールを敷く初回に必要な2つの設定
レールの始点をビューポート内でCtrl+左クリックで作成した後に、始点の詳細でレールの大きさ設定。(4:30)
2つ目の点を作成した後に、始点と2つ目の点をつなぐ線を選択してレールのモデルデータの設定を行います。
エレメントの定義を追加します。
MeshからRollercoasterPluginで追加された Track_Splineスタティックメッシュを選択
スプラインに沿ってメッシュが生成されました。
しかしこのままでは メッシュデータの繰り返し方向が誤っているため網みたいになっています。
ForwardAxisをX(左右)からY(前後)へ修正します。(5:20)
3つ目以降の制御点を打つ
つなげたい制御点を選択した状態で、ビューポート内をCtrl+左クリック。
カーブを緩やかにする
制御点を選択してRキーで回転モードへ切り替え。
ドラッグで調整。
終点と始点とつなげてループできるようにする
終点を選択した状態で視点をCtrl+左クリック
先ほどと同様に制御点を選択してRキーで回転モードへ。
制御点を回転させてカーブを緩やかにしてコース完成
ジェットコースターのスタート位置を設定
ゲーム開始時にプレイヤーがスタートする地点を指定する、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)へ切り替え
PlayStartアクタを選択してレールの上へドラッグ
ビューポートの視点を変えてレーンに接するように調整。正面の方向を進行方向へ回転。
いよいよ実行!でも動かない?
チュートリアル動画では、ここで再生を押すと自動的に走り出します。(6:56)
しかしRollercoasterPluginのバージョン4.4.1からは自動的にスタートしないよう変更になったようです。
自動的に動かすには?
実行中にRollercoasterPlayerControllerを選択して、詳細パネルからPlayer ControllerのStoppedをON→OFFへ。Climbing(上昇)をOFF→ONへチェックを入れ変えると動きます。
ブループリントから制御する
オブジェクトの詳細パネルの設定値をブループリントから設定します。
ブループリントに設定する内容
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. レベルブループリントで設定する場合
トリガーをBegin Playからいずれかのキーにすることにより、実際のOculus体験会ではオペレーションしやすい感じに作ることもできそうです。
b. RollercoasterPawnクラスブループリントで設定する場合
次回につづく
サクッと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/