アクション単体では作れない
アクションを束ねた、アクションセットを作成するところから始まります。
最初はいくつものアクションが定義された default アクションセットが選択されている
default のほかに platformer, buggy, mixedreality のアクションセットが確認できる
アクションセットを作る
Window > Steam VR Input でダイアログを表示し
既存の default, platformer, buggy, misedreality のボタンの右側に + ボタンあるので押す
NewSet で作成、何か一つ In Actions に NewAction を追加 boolean Type とする
Save and generate ボタンを押し、完了を待つ
BooleanAction を参照してイベントハンドラを登録
using UnityEngine; using Valve.VR; public class MyActionScript : MonoBehaviour { // a reference to the action public SteamVR_Action_Boolean sphereOnOff; // a reference to the hand public SteamVR_Input_Sources handType; //reference to the sphere public GameObject sphere; void Start() { this.sphereOnOff.AddOnStateDownListener(this.TriggerDown, handType); this.sphereOnOff.AddOnStateUpListener(this.TriggerUp, handType); } private void TriggerDown(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource) { Debug.Log("Trigger is down"); this.sphere.GetComponent<MeshRenderer>().enabled = true; } private void TriggerUp(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource) { Debug.Log("Trigger is up"); this.sphere.GetComponent<MeshRenderer>().enabled = false; } }
ということ
Activate Action Set しないといけない
自分で作ったアクションセットはゲーム開始時にアクティブではない
アクティブになるように明示
先ほどの MyActionScript より前に実行される位置にシーンに配置しないといけない制約もある
Open Binding UI
Window > Steam VR Input でダイアログを表示し、Open Binding UI ボタンを押す
newset という、さっき作ったアクションセットのタブが見える。
アクションが割り当たっていないことを示す表示かな
タブを選択して
はじめて動作することになる
まとめると、以下の一つが欠けると、何も反応ない結果になる
- アクションセットを作る
- アクションを作る
- アクションハンドラを作る
- アクションハンドラを登録するコードを書く
- アクションを参照
- 順番を守ったアクションアクティベート
- 入力管理でアクションセットのアクションをコントローラのいずれかの操作にバインディング