【VR,OculusGo,Unity】素人がレーザーポインターを出すやり方を実践 Part2 完成!
Part2参考記事のscriptをみつけられなかったため、他の記事を参考にすることにした。
レーザーポインターを出そう!Part2
レーザーポインターを出す
情報収集
【VR,OculusGo,Unity】素人が目線にポインターを出すやり方を実践 - ぼくの息抜き
この記事の時に調べたこちらの記事を参考に1から作ってみる。
実践
環境
- macOS
- Unity Ver 2018.1.9.f1
参考記事
【Unity】VRレーザーポインター(ビーム)を作る - ヽ|∵|ゝ(Fantom) の 開発blog?
1.unitypackageをインポート
GearVRLaserPointerTest.zip - Google ドライブ
上記のURLからダウンロードして、Unityで新規のプロジェクト作って、ダブルクリックインポート。
Assets > _GearVRLaserPointerTest > Scenes > GearVrControllerTest_LaserPointer
を開くとこんな感じ。
このままBuildしてもLaserPointerらしきものはあっても動かなかった。
2.空のObjectにLineRenderer
空の GameObject にアタッチし、LineRenderer を追加する(線の幅[Width:0.005くらい]やマテリアル・色も設定する)。
これはPart1でもやった。
めちゃくちゃわかりやすい画像が参考記事にある。引用させて頂いて、少し編集した。
3.LaserPointer Scriptを追加
2で作った空のオブジェクトに
Assets > _GearVRLaserPointerTest > Scripts > LaserPointer
を追加する。
Anchor にポインターを発するものを入れる。
LineRendererには2で作ったからのオブジェクトを入れる。
これでいけるらしいのだが、Buildしてもうまくいかなかった。
4.『Oculus Integration』をインポート
AssetStoreから『Oculus Integration』のVRフォルダだけインポートした。
そして『OculusUtilities.unitypackage』でアップデート。
既存の『GearVrControllerTest_LaserPointer』Sceneの『OVRCameraRig LaserPointer』を削除し、『Oculus Integration』の
Assets > Oculus > VR > Prefabs > OVRCameraRig
を追加する。
LeftHandAnchorとRightHandAnchorにはTrackedRemoteを追加。コントローラーが表示される。
そして、もう一度2で作ったオブジェクトにRightHandAnchor追加。
再ビルド。
できた!!
6.おまけ LaserPointerの先にPointerを表示する
Pointerの先に小さいSphereを配置して選択場所をわかりやすくした。
参考記事のLaserPointerのscriptに『hit.point』というRayCastとObjectの衝突座標がVecter3で取得できるようで、そのVector3の場所に小さいSphereを出現させて実装した。
ただ、そのままSphereを表示するとRayCastとぶつかってだんだん近づいてきてしまう。
これはこれで面白いのだが、Laser PointerScriptにRayExclusionLayersというLayerGroupでRayが衝突判定しないようにできる。
実際使うかはわからないが、理屈はわかったので良しとしよう。
自分の知識だとこのSphereとObjectでのOnTriggerなどで接触判定をしてボタンなどの操作を適応させることができる。
追記
レーザーポインターを1からシンプルに出すやり方を丁寧に解説している記事を見つけたので、貼っておく。
めちゃくちゃわかりやすい&丁寧。