RSSWordPress.orgStingray(VRテンプレート)のコントローラ処理を調べてみる(リンクとスポーン)前々回、前回と続いてきたStingrayVRテンプレートにおけるコントローラの実装調査ですが、いよいよ今回で最後です。最後ということで、キーになることも多いです。ここで覚えることがStingrayにおけるVR開発において最も重要なことになります。大きな1つのグループと見ることができます。ややこしいように見えますが、処理の内容自体はシンプルです。下で説明している2つのグループB,Cへと続きます。外部からこのイベントが呼ばれた際に以後の処理が呼ばれるようになります。外部よりこのイベント(link_controller)が呼ばれた時にのみ実行される』という事になります。ちなみに、このVRテンプレートの場合、link_controllerの呼び出し元は『steam_vr』という名前のLuaスクリプトになります。Unit』などのノードからも呼び出すことができます。Tracker』ノードです。to』に設定されたHMDやコントローラの位置に引数に指定したユニットのメッシュをリンクさせる(くっつける)処理です。これまで、何気なくVR画面でコントローラを動かしていましたが、VR画面でコントローラが見えていたのはこの処理があったおかげだったのです。『どちらかを行う』などではなく、両方の処理を行います。画像内のグループBです。ここでは『物を持ち上げる為の前準備』を行っています。1スクリプトデータをチェック最初は『Branch』ノードが実行されます。『Branch』ノードは引数として受け取ったbool型の結果によってTrueかFalseに処理を分岐させるというノードです。他のビジュアルスクリプティングにおいても同名で使用されているなどこれなしでプログラムは成り立たないほどの基本的なノードです。今回はTrueなら処理を続け、Falseなら処理が終了する、といった形になっています。Position』ノードです。このノードは引数のUnitに指定したユニットをスポーンさせるという処理を行います。PositionやRotationをセットするとスポーンさせる位置や向きを指定できます。ここでスポーンしているのは『functionality_pickup』というユニットになります。簡単に言うと『対象を持ち上げる処理』になります。Data』を使用してユニット変数controller_indexを設定します。Tracker』です。先ほどスポーンしたfunctionality_pickupとリンクさせています。ここでの処理は『持ち上げる為の処理をスポーンさせ、コントローラの位置にリンクさせる』という物です。画像内のグループCです。こちらのグループでは『プレイヤーのテレポート処理の前準備』を行っています。1~3までの処理は2でスポーンしているユニットが『functionality_teleport』である以外は全く同じです。Update』によって実行されています。Touch』を使用しています。今回は入力された座標が欲しいわけではないため、使用する返り値は入力した時/離した時を表すPressed/Releasedのみです。Event』に繋がっています。Event』はユニットが持つ外部イベントを呼び出すノードです。Pressedの場合はfunctionality_teleportが持つ『press_teleport』イベント、Releasedの場合は同じくfunctionality_teleportが持つ『release_teleport』イベントへと処理が続きます。これで、コントローラのユニットフローの処理は一通り見ることができました。今回の調査で新しくfunctionality_pickupとfunctionality_teleportという新しいユニットが出てきました。次回からはこの2つのユニットフローについて、ご説明していきます。