ぼっちプログラマのメモ

UE4とかVRとかについて書いたり書かなかったり。

UE4のSpline機能を使って、Oculusジェットコースターを作ってみる その1

きっかけ


というわけで、RollercoasterPluginを使わずに
UE4でOculusジェットコースター作ってみます。
(UE4のバージョンは4.7 Preview)

下準備

FPSテンプレートを使ってプロジェクトを新規作成、
そして、この「Blueprint Splines Track」をプロジェクトに追加します。
f:id:pafuhana1213:20150131172153j:plain
f:id:pafuhana1213:20150131173018g:plain
↑の感じで、スプラインに沿ってメッシュを自動配置・変形してくれるスゴイ奴です。

今回の制作では、この子のSplineComopnentを使うだけなので
メッシュ配置周りは解説なしです。あしからず (そもそもまだ理解できてな…)


次に、SplineComponentから各情報を取得する関数を一通り用意しておきます。
今後使いまわす気がするので、BPライブラリーで実装。
参考:[UE4] スプライン上を動く足場の作り方 | historia Inc - 株式会社ヒストリア

f:id:pafuhana1213:20150131175946j:plain
f:id:pafuhana1213:20150131180038j:plain

  • Spline上の進んだ距離の取得
  • 距離に応じたSplineの座標・回転・向き・接線の取得

https://dl.dropboxusercontent.com/u/30427841/0131/BP_SplineFuncLibrary.uasset
※ Contentフォルダ直下に置いて下さい

Splineの編集

まずは、てきとうにコースを作ってみます。レベル上に
"TrackGenerator/Blueprints/TrackGenerator"に配置して、Splineを弄ります。
操作方法に関しては、↑の参考で載せたヒストリアさんの記事を参考にして下さい。

※UE4のバージョン4.7では、Splineの編集中に表示される制御点が増えたことで
 カーブの調整が簡単になりました。

※ エディターのビューポート画面左上にある、マニピュレータの
  回転をローカル・ワールドに切り替えられる機能はSpline編集中によく使います
f:id:pafuhana1213:20150131182810g:plain

※ TrackGeneratorのLoopingTrackにチェックを入れると、Splineの始点と終点が
  自動的に結ばれるので便利です。


できました
f:id:pafuhana1213:20150131184330j:plain

プレイヤーをSpline上で動かす

まずは、TrackGeneratorのSplineをプレイヤーが参照できるようにします。
今回はレベルBPでこんな感じに実装
f:id:pafuhana1213:20150131190329j:plain

そして、プレイヤーの方にはこんな感じで組みます。
https://dl.dropboxusercontent.com/u/30427841/0131/Tick.jpg

  • 毎フレーム(Tick)、移動量(Length)を計算して、スプラインから取得した座標・回転を、プレイヤーの座標・回転にセットしています(SetActorLocation/Rotation)

ここまでの進捗
https://dl.dropboxusercontent.com/u/30427841/0131/%E9%80%B2%E6%8D%97.gif


今回はここまで。
次の記事ではもう少しジェットコースターっぽい挙動にします。

おまけ

SplineComponentに関しては、ContentExampleの
BluePrint_Splineレベルがとても参考になると思います。
Unreal Engine | ブループリント スプライン コンテンツ事例