トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

VRタイピングゲームで文字の打ちやすさを測りたくない【入力できた!】

これの続きです。やっと入力できました。

bibinbaleo.hatenablog.com

Oculus GOでGUI

こちらの記事のおかげで、OculusGoでマイキロソフトのキーボード入力ができました。

qiita.com

ずっとoculusGoでのuGUIのボタン入力の仕方がわからず、MRTKとか使って迷走していました。

f:id:bibinbaleo:20180612191108p:plain

www.youtube.com

やり方

Oculus/VR/Scenes/UIシーンのOVR GazePointerをプレハブ化して使えるようにします。

f:id:bibinbaleo:20180609123746p:plain

これのRay transformを右手のコントローラーにします。すると右手からポインターが出ます。これを頭にすると、頭の動きで選択する形になります。

f:id:bibinbaleo:20180609123744p:plain

 

そしてCanvasを作り、こんな感じにします。

f:id:bibinbaleo:20180609124014p:plain

Graphic Raycaster消して、OVRRaycasterを代わりにつけ、Blocking ObjectsAllにするそうです。

f:id:bibinbaleo:20180609124017p:plain

また、EventSystemにからStandalone Input Moduleを消し、OVR InputModuleを付けます。ここのRay TransformRightHandAnchorにしました。(よくわかってない)

f:id:bibinbaleo:20180609124238p:plain

読まなくていいよ

以前コントローラーのポインター機能のために付けていた、VRsampleのVRCameraUIのGUIReticleもアンカーを出すのでいらないので消した。

f:id:bibinbaleo:20180609124620p:plain

入力フィールドをあーだこーだ

手前遠くで二つのキーボードを表示して、入力のしやすさを比較したかったけど、入力した文字が手前のフィールドにしか表示されない。

どうしたらいいかよくわからなかったので、手前のキーボードのみにして、ボタンで大きさと位置を変化できるようにしようと思った。

しかしkeyboardはCanvasで普通のゲームオブジェクトのようにスクリプトから大きさや位置を変化させれなかった。

f:id:bibinbaleo:20180612131838p:plain

RectTransformは何者なの?

Vector3 big = keyboard_big.gameObject.transform.position;
Vector3 min = keyboard_min.gameObject.transform.position;
Vector3 the = ha.gameObject.transform.position;

void Update(){

if (Input.GetKeyDown(KeyCode.DownArrow))/////エディタ用
{
the = new Vector3(min.x, min.y, min.z);
Debug.Log("sita");
}
if (Input.GetKeyDown(KeyCode.UpArrow))
{
the = new Vector3(big.x, big.y, big.z);
Debug.Log("ue");
}

}

こんな感じのスクリプトではだめだった・・・

そもそもこれ普通のゲームオブジェクトでも動かなかったからスクリプトが間違っている気がする。

 

そもそもキーボードを押して入力したテキストをフィールドに表示する部分がどうなっているのかがわからない。

ボタンについているスクリプト

m_Text = gameObject.GetComponentInChildren<Text>();
m_Text.text = Value;

というコードがあった。

 

自分で作ったTextにテキストを入れてもらうためには

m_Text= GameObject.Find("Inputhand").GetComponent<Text>(); 

でFindでテキストをゲットできる。

chnr.hatenablog.com

だが、これだと「?」って撃ち込まれた。?ってなんだよ!どっからきたんだよ!って感じ・・・

結局キーボードのInpurtFieldに貼ってある

f:id:bibinbaleo:20180612171735p:plain

Slider Input FieldのTextComponentに自分で作ったテキストを埋め込めばできた。

f:id:bibinbaleo:20180612171238p:plain

Rich Textは外しておく

f:id:bibinbaleo:20180612171240p:plain

なんで勝手に積み重ねられていくんだろう?カーソルのピカピカも出るし・・・どこでそのスクリプト書いてるんだろう?

普通にやってたら上書きされない?bの上にc

なんでbcと表示される?

 

最後に

私のような素人はアセットの構造を理解するのに50年かかるので研究は無理です。

と思ったらキーボードアセットを解説しているサイトがあった!

/Knowledge/Programming/Unity/MRTK.UX.Keyboard メモ

これを見てもわからない