サクッとOculusジェットコースターをつくろう! その4 ~ コースをつくってみる。 UnrealEngine43分クッキング #UE4Study

 スクリーンショット_011515_015848_AM

いよいよRollercoasterPluginのスプラインでコースを作ります。

前回

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

前回は気前よく公開されているUE4Rollercoasterのプロジェクト一式を読んでRollercoasterPlugin4.4.1の使い方を把握しました。

環境

  • Unreal Engine 4.4.3
  • RollercoasterPlugin 4.4.1

コースを作る初期設定

まずはレベル全体のスケールを小さくしていきます。

設定はコースの最初の制御点を追加した後に行います。

制御点の追加方法についてはこちら

サクッとOculusジェットコースターをつくろう! その2 ~ ブループリント続編  UnrealEngine43分クッキング
http://2vr.jp/2015/01/12/ue4-de-oculus-rollercoaster-2/

最初の制御点でコースのスケールを設定

チュートリアル動画で設定していた100ではコースターの速度がノロノロ。
(一応RollercoasterPlayerControllerのSet Climbing Speedでも設定可能)

どうやら前回参考にしたUE4Coasterではレベル全体のスケールを下げており、RollercoasterPluginの調整自体がこのスケール感で行われている風なので倣います。
これによりコースターの進行速度が相対的に早く感じることができる。

スクリーンショット_011515_124000_AM

PlayerStartのスケール設定

Player Startのスケールを1→0.1

スクリーンショット_011515_125038_AM

世界のスケールを変える

World to Metersを100→7.5へ

スクリーンショット_011515_125333_AM
※ついでにGame Modeも画像の通りに。

ゲームモード(Game Mode)について

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

 

コースを作ろう

まずは高低差を考えず平面のコースを作成する

コース1周をつなぐ前に制御点の高さをいじるとスプラインの捻りの調整が面倒くさいので、とりあえず一周繋ぎます。
スプラインを繋ぐ場合は終点を選択して始点をCtrl+左クリック

コースのつくり方について

サクッとOculusジェットコースターをつくろう! その2 ~ ブループリント続編  UnrealEngine43分クッキング
http://2vr.jp/2015/01/12/ue4-de-oculus-rollercoaster-2/

スクリーンショット_011515_010021_AM

カーブを滑らかに

カクカクな制御点を選択してEキーから回転を編集
また、滑らかになったタイミングでRキーを押すと接続する両方の制御点を考慮した角度に自動的に調整してくれます。

無題クリップ_011515_010434_AM

高低差を付ける

Wキーで位置を編集

制御点を選択してZ軸を編集します。
複数の制御点で同じ高さにする場合は、詳細のLocation.zで高さを直接設定するとよさげ。

スクリーンショット_011515_011759_AM

試しに走らせてみる

コースターを動かす最小限のレベルブループリントを作成

スクリーンショット_011515_015331_AM

RollercoasterPluginをレベルブループリントで操る方法についてはこちら

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

 PlayerStartをコースの任意の位置に置いてAlt+Pで再生

しかし・・・

制御点で逆走する問題

フォーラムにも報告されている突如ワープしてしまうような現象。

https://forums.oculus.com/viewtopic.php?f=42&t=8032&start=240#p224129

RollercoasterPluginではこのあたりの実装っぽい

https://github.com/Teddy0/RollercoasterPlugin/blob/master/Source/RollercoasterPlugin/Private/RollercoasterPlayerController.cpp#L232

原因

スケーリング設定の両端のコントロールポイント(Control Point)が制御点を挟んで同じ方向の場合などで結果的に問題が起こる。
(処理的には制御点通過時にコースターの進行方向のrotationを指定。使われている関数の意味を調べていないので断言はできないけど、その際に2つあるコントロールポイントの方向を見てるっぽい)

スクリーンショット_011515_015005_AM

対応

各制御点のスケーリング設定のコントロールポイントを逆方向にドラッグで調整する。

※但し、正としている反対側にある状態でも逆走することがあった。
その際はスケーリングを大きくするように調整するか、その制御点を削除して作り直すかなどで解消。

無題クリップ_011515_013240_AM

これでコースターがゆっくり1周回るようになる。

次回に続く

コースターが走る音や、コースの勾配でコースターが加速するようにしていきましょう。

サクッとOculusジェットコースターをつくろう! その5 ~ コースターの加速をブループリントで実装 UnrealEngine43分クッキング
http://2vr.jp/2015/01/18/ue4-de-oculus-rollercoaster-5/