目次
参考
- 【Unity】「Steam VR Plugin ver2」を使って「Survival Shooter Tutorial」をVR化してみる HTC VIVE編
環境
- Unity 2019.1.0f2
- SteamVR Plugin 2.2.0
- プロジェクトへのインポート時に出るダイアログ類は大体YesかAcceptAllする
- Unity:VRゲームを作ってみたい/03-SteamVR:スティックで移動、方向転換してみる の続き
前提
- 前回の移動、方向転換操作は維持して両立させる
- Terrainとの衝突判定維持
1.色々調べてみたが、最終的にSteamVRのInteractionSystemに頼る所に落ち着く。
1.1.InteractionSystemのTeleport関連使用するためにはCoreのPlayerが必要なので、とりあえず前回のCapsuleや[CameraRig]は諸々なかったことにする。(削除か無効化する、無効化のほうが楽)
1.2.SteamVR関連のオブジェクトを追加する。
- 1.2.1.必須のオブジェクト
- [SteamVR]→[InteractionSystem]→[Core]→[Prefabs]の[Player]を配置する
- [SteamVR]→[InteractionSystem]→[Teleport]→[Prefabs]の[Teleporting]配置する
- 1.2.2.任意に置くオブジェクト ※必要なぶんだけ設置する
- テレポートエリアの設定
- Planeを置く
- [SteamVR]→[InteractionSystem]→[Teleport]→[Scripts]の[TeleportArea]をPlaneにつける。※ちなみに透明な板になるので、別途エリアを示す板を重ねて0.1ぐらいTeleportArea側を浮かせるようにすると良いかもしれない。
- テレポートポイントの設定
- [SteamVR]→[InteractionSystem]→[Teleport]→[Prefabs]の[TeleportPoint]を配置する
1.3.配置したオブジェクトのインスペクターを弄る
- 1.3.1.まずプレイヤー
- Rigidbodyを付ける ※内部にBodyColliderも無効化されて存在しているが、前回の移動スクリプトが上手くいかないのでPlayerに直にRigidbodyを付けることにした。Rotationはロックしておく。
- Capsule Colliderを付ける ※Rigidbodyが地形に沿って動作するように
- 前回作成したMoveControllerを付ける ※テレポートとスティックによる移動の両立。前回のCapsuleが残ってたらインスペクタービューのコンポーネントをヒエラルキーのPlayerにドロップすればまるごと引き継げる
- PlayerスクリプトのTracking Origin TransformにはPlayer自身を設定しておく。テレポートしたときに位置情報を反映するオブジェクトになる。
- MoveControllerのCam変数にはPlayerの中のSteamVRObjectsの中のVRCameraを設定する
- Playerの中のFollowHeadの中のHeadColliderは、SphereColliderを無効化する。※Playerに付けたColliderと干渉するので…不具合があったらまた別途検討する
- 1.3.2.Teleportingの設定
- TeleportActionにテレポートを発動させるボタンを設定する。 ※予めSteamVR Inputでteleport定義をboolで追加し、割当をしておくとキレイになるが、既に全ボタン割当済みだったらButton_Aをそのまま指定しても良かったか・・・
多分動くはず。
前回の移動実装時点で気づいていたが、カメラの位置とコライダーの位置が同期できていないため、旋回する際に違和感がある。
前回の移動実装時点で気づいていたが、カメラの位置とコライダーの位置が同期できていないため、旋回する際に違和感がある。