バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事は、unity webXR exportでMeta Quest2のスティック入力を取得して移動させてみたからそのメモ。
unity webxr exportについては以前書いたのでそちらを参照。




参考にした頭のいい先輩のページ
とても参考になりました。
ありがとうございます(*^-^*)

最初に自作パッケージを作ってpackagesフォルダに自作スクリプトを入れた
これは前回書いた。



Assetフォルダにスクリプトを入れても、packagesフォルダにあるWebXRのスクリプトが参照できなかったため。
もしかしたらasmdefファイルの設定をちゃんとやればできるのかな?どうだろ。
スティックの状態を取得してデバッグ出力してみる
先輩のページにコードが書いてあったのでその通りに書いてみた。

スクリプトは後述。
unity webxrcontroller.csの中にある、GetAxis2D関数を使えばいいっぽいです。
画面にデバッグログを表示する
ちゃんとスティックの値を取得できてるか不明なので、デバッグログを表示したい。
でもGetAxis2DがVector2型だったので、普通にキャンバスのテキストに表示させようとしたら型不一致のエラーが出た(~_~;)
でもこの頭のいい先輩のスクリプトはまんまコピペで動作したので助かった。
ありがとうございます(*^-^*)




BitArrayというものが何か全く分かっていないけど、とりあえずデバッグログは表示できました。
Meta Quest2で見てみたら、ちゃんと左スティックを傾けたら数値が変わったので認識されてるっぽいです。
返り値を上手くトランスフォームに代入すれば動かせるかな。
スティック検知でカメラを動かすには?
カメラというかWebXRCameraSetごと動かす。
まずカメラの向きを取得して、左スティックで前後左右移動、右スティックで向きを変える感じ?
とりあえず向きは考慮せずに左スティックで移動だけできればいいかな。
transformの位置を変えればいけそう。
unityスクリプト
最近あんまりプログラムいじってないから適当です。
そもそも私はエンジニアではないし(;^_^A
XRtest.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using WebXR; public class XRTest : MonoBehaviour { [SerializeField] WebXRController leftHandWebXRController; void start() { } void Update () { var obj = GameObject.Find("WebXRCameraSet").transform; var a = leftHandWebXRController.GetAxis2D(WebXRController.Axis2DTypes.Thumbstick); obj.gameObject.transform.Translate(a.x, 0, a.y); } }
これをmypackageに入れた。
LeftHandに追加した。
using WebXR;
これでWebXRController.csのクラスが使えるようになるっぽい。
namespace(名前空間)についてはこちら。




[SerializeField] WebXRController leftHandWebXRController;
SerializeFieldについてはこちらの記事が分かりやすかったです。

var obj = GameObject.Find(“WebXRCameraSet”).transform;
WebXRCameraSetのtransformを取得。
WebXRCameraSetの名前を変えているとダメです。
var a = leftHandWebXRController.GetAxis2D(WebXRController.Axis2DTypes.Thumbstick);
これでVector2型でスティックの状態が取得できるっぽいです。
今回は使わないけど、ボタンの状態を取得する関数とかもあるみたいです。
obj.gameObject.transform.Translate(a.x, 0, a.y);
単純にWebXRCameraSetのトランスフォームに代入してみた。
テレポートする感じになるかと思ったけど…割といい感じに動いたからいいか。
Meta Quest2で動作を確認してみる ※webVRあり
動きは速すぎるけど、まぁ動いたからヨシ。
Meta(Oculus) Quest2のMetaブラウザから見れた。

…けど夜見たら重!(-_-;)最近エックスサーバーさん不安定かも。
2022/05/31追記:エックスサーバーを新サーバーに移行したら、サイトスピードが20%くらい?アップしたから少しはマシになったかも。多分(;^_^A
予備のアダルトOK激安サーバー借りてるから一応上げとく↓

時間帯によると思うけど、こっちのほうが読み込み早かった。
月250円でちょくちょく落ちるけど(;^_^A
ついでにLookAnimatorも使ってこっちを見てくれるようにした(笑)。
Look Animator|unity Asset Store
まぁ動けるようになったから良いかな( *´艸`)
続く?
あとは向きを変えてみたいけど、どうだろ(・_・;)
WebXRCamerasetのトランスフォームの値を取得して、右スティックのGetAxis2Dの返り値をトランスフォームの回転にプラスマイナスすればいけるか?
移動も向きによって前後左右変えたほうが良いけど、なんか大変そう(・_・;)
まあ向きはquest本体を傾けて、ボタン長押しすれば修正できるから、なくてもそんなには困らないけども。
とりあえず自己満足用に使いたいだけだし。
VRで見るにはアプリ必須だけどSTYLYでもいいとは思う。






もう少しいじってみようと思います(*^-^*)