🎢

cluster ライド系アトラクション ワールドの作り方

2022/12/15に公開

思いつきで ライド系アトラクション ワールド祭り 2月初旬 に開く事にしてしまったので、この入門記事を書いてみることにしました。ライド系アトラクションワールドが増えるといいな...

Creater Kit の 椅子に座る機能を利用して座ったユーザーの操作なしに自動でコースを移動して進んでいくワールドを作る方法を説明していきます。 最後の方に サンプルプロジェクトへのリンク も書いたのでコピーして内容改変してライド系アトラクションワールドを作ってみてください

ライド系アトラクション とは

wikipedia によると下のような 定義のようです。

ライド(ride)とは乗り物のことである。
乗り物の動き自体を楽しむ物や、乗り物のコースに作られた物語のセットを見て楽しむ物などがある。

ユーザーが操作するのではなく、コースを移動する乗り物の仕組みを作ってみたいと思います。

Creator Kit 導入済みのプロジェクトの用意

Unityのインストールや導入方法は省略しますが、
プロジェクトを新規で作成する際は Cluster Creator Kit テンプレートプロジェクト を元に改変するのがトラブルも少なくておすすめです。

https://github.com/ClusterVR/ClusterCreatorKitTemplate

ダウンロードして展開したフォルダの名前を 作るワールド名にして unity で開くと環境が整います。

Cinemachine の追加

Cinemachine

本来の利用方法は Unity のカメラを操作するためのUnity無料パッケージなのですが、レール上に配置したカメラを移動させる機能を利用して、乗り物をコースに沿って移動させる ために利用するので プロジェクトに追加します。

  1. メニューバーで、Windows > Package Manager 開く
  2. Unity Registry で Cinemachine を検索
  3. ダウンロードとプロジェクトへのインストールをする

インポート後のエラー

下のエラーが出た場合 Unityを一度、終了して プロジェクトフォルダの Library フォルダを削除後にUnityを起動してプロジェクトを開き直すとエラーが解消されます。

Failed because this command failed to write the following output files:
Library/Bee/artifacts/mvdfrm/UnityEngine.UIxxxxx

Cinemachine の Dolly Track と Dolly Cart をシーンに追加

コースと 乗り物になるオブジェクトをヒエラルキーに追加します。

  1. メニュー GameObject > Cinemachine を開く
  2. Dolly Track with Cart を選択する
  3. ヒエラルキーに DollyTrack1DollyCart1 が追加されてるのを確認する

DollyTrack を編集してコースを作る

DollyTrack1 を編集することでコースを作ることができます。ここでは簡単に円のコースを作ってみようと思います。

  1. ヒエラルキーで DollyTrack1を選択する
  2. インスペクターで CinemachineSmoothPath コンポーネントの設定を変更していく
    1. Loopd にチェックを入れる これでコースのPathがが閉じて一周回れるようになります。
    2. Waypoints を 二つ増やして 円になるように値を調整する

Dolly Cart を編集して乗り物を作る

DollyTrackに沿って移動するオブジェクトを作るために Dolly Cart1 を編集していきます。

  1. ヒエラルキーで DollyCart1を選択する
  2. DollyCart1 の Cinemachine Dolly Cart コンポーネント の Speed を 1 にする
  3. 見た目オブジェクトとして Cube を追加, scaleを 0.5 程度に変更する
  4. DollyCart1Ridable Item を追加します

ここまでの変更で コースを回る乗り物ができているはずです。実行して確認してみてください。

乗車と停止の組み込み

このままでは 乗車がのが難しいので 乗車後に開始して一周したら停止するようにしてみます。

開始スイッチを Cart につける

インタラクトすると開始するスイッチを Cart に追加してみましょう。 CreaterKit の仕様で Item の子に Itemは追加できません、 Cart は Ridable Item になっているはずなので Constraint で乗り物に追従させる方法を使います。

  1. ヒエラルキーで 右クリックして Create Empty をして GameObject を追加 名前を DollyCart1StartSwitch に変更する

  2. DollyCart1StartSwitch 以下に Sphere を追加して Scaleを 0.3 くらいにする

  3. DollyCart1StartSwitch 位置を Cart の前方に ずらして 乗った時に押しやすい位置に設定

  4. DollyCart1StartSwitchParent Constraintコンポーネントを追加する

    1. Is Active にチェックを入れる
    2. Sources に DollyCart1 を設定する
    3. これで カートに追従する 状態になります。
  5. DollyCart1StartSwitchInteract Item Trigger コンポーネントを追加します

    1. Trigger を追加。
      Target SpecifiedItem Key名 Start
      Specified Target Item は DollyCart1
      Parameter Type Bool true(チェックを入れる)
    2. これで DollyCart1 に Bool値 true を送ることができるようになる

当たると Cart が停止するアイテムを コース上に作る

一周まわったあたりに当たると Cart が停止するためのアイテム DollyCart1StopSwitch を作ってみましょう。

  1. ヒエラルキーで 右クリックして Create Empty をして GameObject を追加 名前を DollyCart1StopSwitch に変更する
  2. DollyCart1StopSwitchBoxCollider コンポーネントを追加する
    1. Is Trigger true(チェックを入れる)
    2. サイズを X 0.5 Y 1.5
    3. 配置位置 Transform を 開始位置の少し後ろに設定する
  3. On Collide Item Trigger コンポーネントを追加する
    4. Collision Event Type Exit
    5. Collision Type Trigger
    6. Triggers を 1件追加
    Target SpecifiedItem Key名 Start
    Specified Target Item は DollyCart1
    Parameter Type Bool false(チェックを入れない)
    7. これで DollyCart1 に Bool値 false を送ることができるようになる

DollyCart1 を 開始,停止できるようにする

DollyCart1の値変更と DollyCart1Systemを作って Animator で開始と停止するようにしてみます。

  1. ヒエラルキーで DollyCart1 を選択する
  2. DollyCart1 の Cinemachine Dolly Cart コンポーネント の Speed を 0 にする
  3. DollyCart1を選択したまま ヒエラルキーで 右クリックして Create Empty Parent をして GameObject を追加 名前をDollyCart1System に変更する。
  4. DollyCart1SystemSet Animator Value Gimmick を追加する
    1. 各値を下の内容にする
      Target Item Key名 Start
      Item DollyCart1 Parameter Type Bool
      Animator Parameter Name start
  5. Animator コンポーネントに Controller を新規で作って関連づける
    1. Project欄の適当な位置で 右クリック Create > Animator Controller で新規作成して 名前を DollyCart1 Animator Controller にする
    2. Animator コンポーネントに設定
  6. Project欄の適当な位置で右クリック Create > Animation して Animation を新規作成 名前を DollyCart1 Idle Animation にする
  7. Project欄の適当な位置で右クリック Create > Animation して Animation を新規作成 名前を DollyCart1 Start Animation にする
  8. DollyCart1 Animator Controller を開いて Animator 画面で表示する
    1. DollyCart1 Idle AnimationDollyCart1 Start Animation を Controller に配置する
    2. Animator 画面の Parameters 欄で start Bool を追加する
    3. DollyCart1 Idle Animation > Make Transition で DollyCart1 Start Animation を繋ぐ
    4. Transition の conditions に start true を追加
    5. DollyCart1 Start Animation > Make Transition で DollyCart1 Idle Animation を繋ぐ
    6. Transition の conditions に start false を追加
  9. DollyCart1 Idle Animation を編集
    1. DollyCart1 CinemachineDollyCart コンポーネント Speed を タイムラインに追加
    2. 0 秒で Speed 0 にする
    3. 60 秒にある キーは削除
  10. DollyCart1 Start Animation を編集
    1. DollyCart1 CinemachineDollyCart コンポーネント Speed を タイムラインに追加
    2. 0 秒で Speed 1 にする
    3. 60 秒にある キーは削除

ここまでの内容で コースを一周すると停止する カートが作成できたはずです。

サンプルワールド

コースに沿って移動して、コース上の DollyCart1StopSwitch に当たると停止するサンプルワールドへのリンクと unitypackage です。 Cluster Creator Kit テンプレートプロジェクト へ unitypackage をインストールすればサンプルワールドの環境が作れます!

ライド系アトラクション ワールド作成 入門

SampleRide.unitypackage

SampleRide.unitypackage
使い方

  1. Cluster Creator Kit テンプレートプロジェクト のフォルダ名をワールド名などに変更して開く
  2. SampleRide.unitypackage を インポートする
  3. Project欄の SampleRide > Scenes にある Main を開くとサンプルシーンが表示されます。

おわりに

アセットストアのアイテムや Timeline, Post Processing, Terrain などを使って拡張すれば、
面白いワールドが作れると思います! ライド系アトラクション ワールド祭り に応募してくださーい。

ライド系アトラクション ワールド祭り とは

先日オープンした ライド系ワールドがとても楽しかったので、
もっとライド系アトラクションワールドが増えるといいなーと思って 
この祭りを開催する事にしました!

詳細はまだ決めてないのですが、みなさんにライドワールドを応募してもらって、イベントで紹介するのと
人気だったワールドにはなにかを進呈しようかなーと思ってます

Discussion