通称オキュラスコースターでも使えるコースターのようなものを作ってみました。
こちらのURLに動いてるものがあるので、参照してください。
http://unityroom.com/games/play/256
カスタムパッケージはこちらのものになります。
http://bowlroll.net/up/dl44556
パスワードは「superspline」です。
#使用したアセット
SuperSplines
https://www.assetstore.unity3d.com/en/#!/content/2020
スプラインを作ることができます。
そして作成したスプラインから様々な情報を取り出すことができます。
下記はその中の一例になります。
本当はほかにもいろいろできます。
1, ある点からのスプライン上の最近点を求めます。
float GetClosestPointParam (Vector3 point, int iterations, float start=0, float end=1, float step=.01f)
2, スプライン上のある一点の接線を求めます。
Vector3 GetTangentToSpline (float param)
3, スプライン上のある一点の位置を求めます。
Vector3 GetPositionOnSpline (float param)
スプラインの形状を決めるアルゴリズムも直線、通常のスプライン、Bスプラインなど何種類かあったりします。
#サンプルプロジェクトの使用手順
###1、スーパースプラインをインポートしてください。
持ってない人は購入してからインポートしてください。
###2、カスタムパッケージをDLし、インポートします。
カスタムパッケージはこちらのものになります。※冒頭に記載されているURLと同じものです。
http://bowlroll.net/up/dl44556
パスワードは「superspline」です。
ZIPファイルの中に入っているこちらのファイルをインポートしてください。
###3、シーンファイルのmainを開くと動く状態のシーンが開きます。
#インスペクタのパラメータについて
作成したコンポーネントは3つになります。
PIDJointer
Spline : どのスプラインに沿うか指定します。
Dead Zone P : 位置のずれに比例してかかる力が無くなる幅を指定します。
Dead Zone D : 速度に比例してかかる力が無くなる速度を指定します。
P : 位置ずれに比例してかかる力の大きさを指定します。
D : 速度に比例してかかる力の大きさを指定します。(Y軸の速度、及びスプラインの接線方向への速度は無視します)
Pos Now : スプライン上の最近点の位置を入れます。プレイ中でないと出ません。
Seek Width : 最近点を探す処理で、実際に探す幅を指定します。
Loop End In : スプラインの切れ目近くでは最近点を探す処理が特殊になります。
その処理に切り変わる位置を指定します。
Loop End Out : スプラインの切れ目近くの処理から抜ける位置を指定します。
Aliner
アタッチしたオブジェクトをスプラインの接線方向へ向けます。
Speed Low Limit
コースターの速度が遅くなった場合、ロックし、強制的にコースターを押します。
Speed Limit : 押す場合にターゲットになる速度を指定します。
To Free Sukima : ロック状態からフリーになるための速度を指定します。
実際にはSpeed LimitよりもTo Free Sukimaだけ早い速度になると、ロック状態から開放されます。
To Lock Speed : この速度よりも遅くなった場合、ロックされます。
Speed Ajuster : あまり強く押すと吹っ飛ぶので、力を抑えます。
Speed Now : 現在の速度、プレイ中でないと表示されません。