Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9739

【Unity(C#)】OculusQuestのハンドトラッキングでボタンを押す

$
0
0

Oculus Integration

この記事内ではOculus Integrationの使用を前提に話を進めていきます。

Oculus Integration内のコード自体は
私レベルでは理解不能なことをいっぱいやっていますが、
パーツを部分的に使用すれば本当に使いやすくなっているのが
今回使ってみて改めてよくわかりました。

ありがとうOculus。
(贅沢言えばハンドジェスチャーのステートとかほしい、、、)

デモ

作成中のお絵描きアプリでRedo,Undo機能の呼び出しにボタンを使いました。

HandPaint1.gif

準備

下記リンクを参考に、デモシーンからボタンをパクってきていろいろ設定します。

【参考リンク】:Oculus Quest ハンドトラッキングを試してみた

コード

一部を抜粋して貼ります。

[SerializeField]privateButtonController_redoButtonObj,_undoButtonObj,_paintButtonObj;privateHpPaintFunctionState_paintFunctionState;privatevoidStart(){//Redoボタンが押されたらFunctionステートを変更_redoButtonObj.InteractableStateChanged.AddListener(modeChangeToRedo);//Undoボタンが押されたらFunctionステートを変更_undoButtonObj.InteractableStateChanged.AddListener(modeChangeToUndo);//Paintボタンが押されたらFunctionステートを変更_paintButtonObj.InteractableStateChanged.AddListener(modeChangeToPaint);}/// <summary>/// Redoモードに変更/// </summary>/// <param name="obj">リスナー登録時に必要な引数</param>privatevoidmodeChangeToRedo(InteractableStateArgsobj){if(obj.NewInteractableState==InteractableState.ActionState){_paintFunctionState=HpPaintFunctionState.Redo;}}/// <summary>/// Undoモードに変更/// </summary>/// <param name="obj">リスナー登録時に必要な引数</param>privatevoidmodeChangeToUndo(InteractableStateArgsobj){if(obj.NewInteractableState==InteractableState.ActionState){_paintFunctionState=HpPaintFunctionState.Undo;}}/// <summary>/// Paintモードに変更/// </summary>/// <param name="obj">リスナー登録時に必要な引数</param>privatevoidmodeChangeToPaint(InteractableStateArgsobj){if(obj.NewInteractableState==InteractableState.ActionState){_paintFunctionState=HpPaintFunctionState.Paint;}}

InteractableState.ActionStateという状態になっていれば
各機能(Redo,Undo,Paint)へ切り替わる
という関数を
それぞれのボタンのステートが切り替わった際に実行されるイベントとして登録しています。

まとめ

ButtonControllerInteractableStateChanged
 イベントを登録することでステート変化時に任意の処理が実行可能。

・登録するイベントにはInteractableStateArgsを引数で渡して
 どのステートからどのステートに移行したかに応じた処理が書ける。


Viewing all articles
Browse latest Browse all 9739

Trending Articles