#SteamVRInputObservables
SteamVRInputObservablesは「SteamVR Plugin」におけるControllerのInputEventをObservableとして扱えるようにするAssetです
SteamVRInputObservables.unitypackageをプロジェクトにインポートしてください。 UniRxが別途必要となるため、こちらもインポートしてください。
- 管理用のPrefab
SteamVRInputObservables/Resouces/SteamVREventTrigger
をシーンに配置して下さい SteamVREventTrigger
のInspectorViewより、Left Controller
とRight Controller
を設定して下さいObservableSteamInput.XXXXX
またはthis.XXXXAsObservable()
の形式でストリームを取得できるようになりますObservableSteamInput.XXX
の方はControllerが破棄されない限りOnCompletedは発行されませんthis.XXXXAsObservable()
の方はthisが指すコンポーネントが破棄されると自動でOnCompletedを発行します
using SteamVRInputObservables;
using UniRx;
using UnityEngine;
namespace SteamVRInputObservablesSample
{
public class InputTest : MonoBehaviour
{
void Start()
{
ObservableSteamInput.OnRightTouchPadTouchDown()
.Subscribe(_ => Debug.Log("OnRightTouchPadTouchDown"))
.AddTo(this);
this.OnRightTouchPadTouchDownAsObservable()
.Subscribe(_ => Debug.Log("OnRightTouchPadTouchDown"));
}
}
}
using SteamVRInputObservables;
using UniRx;
using UnityEngine;
namespace SteamVRInputObservablesSample
{
public class InputTest2 : MonoBehaviour
{
void Start()
{
#region Right
#region Trigger
this.OnRightTriggerPressDownAsObservable()
.Subscribe(_ => Debug.Log("Right Trigger PressDown"));
this.OnRightTriggerPressUpAsObservable()
.Subscribe(_ => Debug.Log("Right Trigger PressUp"));
this.RightTriggerPress()
.Subscribe(x => Debug.Log("Right Trigger Press:" + x));
this.OnRightTriggerTouchDownAsObservable()
.Subscribe(_ => Debug.Log("Right Trigger TouchDown"));
this.OnRightTriggerTouchUpAsObservable()
.Subscribe(_ => Debug.Log("Right Trigger TouchUp"));
this.RightTriggerValue()
.Subscribe(x => Debug.Log("Right Trigger Value:" + x));
#endregion
#region TopuchPad
this.OnRightTouchPadPressDownAsObservable()
.Subscribe(_ => Debug.Log("Right TouchPad PressDown"));
this.OnRightTouchPadPressUpAsObservable()
.Subscribe(_ => Debug.Log("Right TouchPad PressUp"));
this.RightTouchPadPress()
.Subscribe(x => Debug.Log("Right TouchPad Press:" + x));
this.OnRightTouchPadTouchDownAsObservable()
.Subscribe(_ => Debug.Log("Right TouchPad TouchDown"));
this.OnRightTouchPadTouchUpAsObservable()
.Subscribe(_ => Debug.Log("Right TouchPad TouchUp"));
this.RightTouchPosition()
.Subscribe(x => Debug.Log("Right TouchPad Position:" + x));
#endregion
#region Application Menu
this.OnRightApplicationMenuPressDownAsObservable()
.Subscribe(_ => Debug.Log("Right Application PressDown"));
this.OnRightApplicationMenuPressUpAsObservable()
.Subscribe(_ => Debug.Log("Right Application PressUp"));
this.RightApplicationMenuPress()
.Subscribe(x => Debug.Log("RightApplicationMenu:" + x));
#endregion
#region Grip
this.OnRightGripPressDownAsObservable()
.Subscribe(_ => Debug.Log("Right Application PressDown"));
this.OnRightGripPressUpAsObservable()
.Subscribe(_ => Debug.Log("Right Application PressUp"));
this.RightGripPress()
.Subscribe(x => Debug.Log("RightGrip:" + x));
#endregion
#endregion
}
}
}
MIT Licenseで公開します
SteamVRInputObservablesはUniRxをベースに作成しています Copyright (c) 2014 Yoshifumi Kawai https://github.com/neuecc/UniRx/blob/master/LICENSE