VR空間で車を乗り回してみた
こんにちは。
VR空間を動き回る手段が欲しいなと思ったので、車を作ってみました。
作り方をメモしておきます。
環境
- unity 2018.2.1f1
- HTC VIVE
準備
ます、Unity の Standard Assets にある車を使うので、まず Asset Store から Standard Assets をインポートします。
(Assets > Import Package で既に Standard Assets がある方はそのままインポートしてください。)
インポートできたら、Standard Assets > Vehicles > Car > Prefabs から Car(プレハブ)をD&Dでシーンに追加します。
次に、SteamVRをインポートして、SteamVR > Prehabs> Camera rig を Car の下に置きます。
また、今回はVRTKを使わないので、以下の設定をします。
まず、Player Settings を開きます。
そして、Player Settings の XR Settings で、Virtual Reality Supported にチェックを入れて、Virtual Reality SDKs の+を押し Open VR を追加します。
これで準備は完了です。
追記
ここで、SteamVR のフォルダが、Standard Assets > Vehicles > Car > Prefabs の階層にある必要があります。(アセットをインポートした時に自動で移動していることもありますが・・・)
よくわからないですが、移動していないと下でスクリプトを書いた時にエラーが出ます。
道を作る
車を走らせようにも道がないと困るので道を作ります。
とりあえずで良い場合は、Cube を引き伸ばしたものに Add Component > Rigidbody で Use Gravity のチェックを外し、Is Kinetic にチェックを入れたものを道にしておくと良いと思います。
私は、Terrain に芝生のテクスチャを貼ったものの上に、Asset Store からインポートした道路のアセットを並べました。
コントローラーで運転できるようにする
下記のスクリプトを、Camera rig の下にあるRight(又はLeft) Controller にアタッチします。
その後、インスペクタから、GameObject に Car をアタッチします。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityStandardAssets.Vehicles.Car; public class Controller : MonoBehaviour { private CarController m_Car; public GameObject gameobject; private float h; private float v; void Start () { m_Car = gameobject.GetComponent<CarController>(); } void Update () { var trackedObject = GetComponent<SteamVR_TrackedObject>(); var device = SteamVR_Controller.Input((int)trackedObject.index); var position = device.GetAxis(); h += position.x * 0.1f * Time.deltaTime; if (device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad)){ v += 0.1f * Time.deltaTime; }else if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)){ v -= 0.1f * Time.deltaTime; }else{ v = 0f; } m_Car.Move(h, v, v, 0f); } }
参考記事
- 作者: 薬師寺国安
- 出版社/メーカー: 薬師寺国安事務所
- 発売日: 2017/01/06
- メディア: Kindle版
- この商品を含むブログを見る