ボタンやタッチに関するコンポーネントを6つご紹介いたします。
押したり触ったりを検知できます。
他のコンポーネントやLogiXと組み合わせることにより、様々なギミックが作れるようになります。
今回は似たようなコンポーネントが多く、各種項目もほぼ同じ内容です。
おススメのコンポーネントは、フィジカルボタンとタッチバリューオプションです。
前回はコチラ
PhysicalButton(フィジカル ボタン)
動く押しボタンが作れるコンポーネント。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
PressAxis: | 押す方向。 | z 1(前方向) |
AcceptPhysicalTouch: | 手指で操作できる。 | 有効 |
AcceptRemoteTouch: | レーザーで操作できる。 | 有効 |
AcceptOutOfSightTouch: | 画面(視界)外でも操作できる。 | 無効 |
EditModeOnly: | 編集モードの時だけ操作できる。 | 無効 |
ActiveUserFilter: | ユーザーの中にあるとき、操作できるかできないかを指定する。 | Disabled |
__legacyActiveUserRootOnly: | ??? | 無効 |
Pressed: | ??? | null |
Pressing: | ??? | null |
Released: | ??? | null |
PressDepth: | 押したときに凹む深さ。 | 0.025m |
PressThreshold: | 押した時に反応するしきい値。 | 0.98 |
ReleaseThreshold: | 離した時に反応するしきい値。 | 0.75 |
IsPressed: | 状態。押されてる。 | 無効 |
IsHovering: | 状態。レーザーが当たってる。 | 無効 |
IsHolding: | 状態。保持してる。 | 無効 |
IsPressedOrHolding: | 状態。押されてる、あるいは保持してる。 | 無効 |
Hold: | 保持する。(一回押すと保持する。もう一回押すと解除される。) | 無効 |
HoldDeothRatio: | 保持してる時の凹む深さの割合。 | 0.5 |
BeginPressVibration: | 押し始めた時のコントローラー振動設定。 | Short |
PressVibration: | 押した時のコントローラー振動設定。 | Medium |
HoverVibration: | レーザーを当てた時のコントローラー振動設定。 | None |
Label: | ??? | null |
_currentPressingDepth: | 状態。現在の押されている深さの割合。(0~1) | 0 |
_buttonOffset: | ボタンの位置調整。 | 自スロットのPosition |
_buttonPosition: | ボタン位置のドライブ先。 | 自スロットのPosition |
・使い方
押しボタンにしたいスロットにアタッチ。
そのスロットか子スロットにコライダーがあれば動作する。
・補足
PressAxisに-1を設定すると逆方向に動く。各軸を組み合わせると、斜めに動かしたりもできる。
IsHoveringは画面(視界)外でも反応する。(以下のコンポーネントも同様。)
Holdを有効にすると、タッチトグルみたいな使い方ができる。
レーザーでトリガーする場合は、押したか押してないかの2状態ですが、手指で押す場合は中間の値も取れるし振動もします。
アタッチすると自動的に_buttonOffsetにスロットPositionの値が設定されます。
_buttonPositionは別のスロットに変更可能です。
コライダーの設定でレーザー無効にすると、操作できなくなる。(以下のコンポーネントも同様。)
手指で押すときはコライダー外周ではなく、スロットの原点位置で反応する。(レーザーのときはコライダー外周で反応する。)
手指の設定が失敗しているアバターでは、反応しない場合がある。
Grabbableと同じところにアタッチすると掴めなくなる。
同一のスロットに、同じ又は違うボタン等のコンポーネントをアタッチすると、片方しか動作しません。タッチイベントリレーを使用することで、複数のボタン等を組み合わせて使用できます。(以下のコンポーネントも同様。)
ボタンを押した際のインパルスを取得できるLogiXがあります。
・Neos Wiki リンク
https://wiki.neosvr.com/PhysicalButton_(Component)
・関連
Button Events (LogiX)
Common UI/Button Interactions フォルダー
TouchableData(タッチャブル データ)
手指又はレーザーで触れた事を検知できるコンポーネント。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
Hovering: | 状態。レーザーが当たってる。 | 無効 |
Touching: | 状態。押されてる。 | 無効 |
AcceptOutOfSightTouch: | 画面(視界)外でも操作できる。 | 無効 |
AcceptPhysicalTouch: | 手指で操作できる。 | 有効 |
AcceptRemoteTouch: | レーザーで操作できる。 | 有効 |
OnHoverStartVibrate: | レーザーが当たった時のコントローラー振動設定。 | Short |
OnHoverStayVibrate: | レーザーが当たっている間のコントローラー振動設定。 | None |
OnHoverEndVibrate: | レーザーが外れた時のコントローラー振動設定。 | None |
OnTouchStartVibrate: | 押した時のコントローラー振動設定。 | Medium |
OnTouchStayVibrate: | 押してる間のコントローラー振動設定。 | None |
OnTouchEndVibrate: | 押し終わった時のコントローラー振動設定。 | None |
EditModeOnly: | 編集モードの時だけ操作できる。 | 無効 |
ActiveUserFilter: | ユーザーの中にあるとき、操作できるかできないかを指定する。 | Disabled |
・使い方
判定を取りたいスロットにアタッチ。
そのスロットか子スロットにコライダーがあれば反応する。
・Neos Wiki リンク
https://wiki.neosvr.com/TouchableData_(Component)
TouchButton(タッチ ボタン)
タッチボタンが作れるコンポーネント。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
IsPressed: | 状態。押されてる。 | 無効 |
IsHovering: | 状態。レーザーが当たってる。 | 無効 |
AcceptPhysicalTouch: | 手指で操作できる。 | 有効 |
AcceptRemoteTouch: | レーザーで操作できる。 | 有効 |
AcceptOutOfSightTouch: | 画面(視界)外でも操作できる。 | 無効 |
EditModeOnly: | 編集モードの時だけ操作できる。 | 無効 |
ActiveUserFilter: | ユーザーの中にあるとき、操作できるかできないかを指定する。 | Disabled |
Pressed: | ??? | null |
Pressing: | ??? | null |
Released | ??? | null |
BeginPressVibration: | ??? | Short |
PressVibration: | 押した時のコントローラー振動設定。 | Medium |
HoverVibration: | レーザーが当たった時のコントローラー振動設定。 | None |
Label: | ??? | null |
・使い方
ボタンにしたいスロットにアタッチ。
そのスロットか子スロットにコライダーがあれば反応する。
・Neos Wiki リンク
https://wiki.neosvr.com/TouchButton_(Component)
・関連
Button Events (LogiX)
Common UI/Button Interactionsフォルダー
TouchEventRelay(タッチ イベント リレー)
他スロットのタッチボタン等に中継できるコンポーネント。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
Touched: | ??? | null |
AcceptOutOfSightTouch: | 画面(視界)外でも操作できる。 | 無効 |
TouchableTargets(list): | 中継先のTouchButton等を指定できる。 | 無し |
・使い方
判定を取って中継元にしたいスロットにアタッチ。
そのスロットか子スロットにコライダーがあれば反応する。
・補足
TouchableTargets(list)は複数指定できるので、ボタン等を組み合わせられる。
例えば、このコンポーネントだけをコライダー付きで用意して、別々のスロットにFriendLinkボタンとフィジカルボタンを用意して、それぞれをTouchableTargets(list)に登録することで、リンク付きの押しボタンを作る事ができます。
LogiXで詳細なタッチ情報が得られる専用ノードがある。
・Neos Wiki リンク
https://wiki.neosvr.com/TouchEventRelay_(Component)
・関連
Touchable Events (LogiX)
TouchToggle(タッチ トグル)
押すたびに状態が交互に切り替わるコンポーネント。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
State: | 状態。(押すたびに切り替わる。) | 無効 |
EventType: | 動作する方式を、TouchとHoverから選ぶ。 | Touch |
ToggleEvent: | トグルする方式(タイミング)を選択する。 | Begin |
OnEvent: | Onにする方式(タイミング)を選択する。 | None |
OffEvent: | Offにする方式(タイミング)を選択する。 | None |
AcceptOutOfSightTouch: | 画面(視界)外でも操作できる。 | 無効 |
AcceptPhysicalTouch: | 手指で操作できる。 | 有効 |
AcceptRemoteTouch: | レーザーで操作できる。 | 有効 |
Vibrate: | 押した時のコントローラー振動設定。 | Short |
EditModeOnly: | 編集モードの時だけ操作できる。 | 無効 |
ActiveUserFilter: | ユーザーの中にあるとき、操作できるかできないかを指定する。 | Disabled |
__legacyActiveUserRootOnly: | ??? | 無効 |
・使い方
トグルボタンにしたいスロットにアタッチ。
そのスロットか子スロットにコライダーがあれば反応する。
・Neos Wiki リンク
https://wiki.neosvr.com/TouchToggle_(Component)
TouchValueOption(タッチ バリュー オプション)
押した時に、色を替えたり大きさを替えたり等の単純なギミックが作れるコンポーネント。
様々な型(数値、文字、色等)があるので、使いたい型を選ぶ。
・場所
Transform/Interaction/
項目 | 解説 | 初期値 |
Target: | 書き替えたい項目。 | null |
Value: | 書き替える値を指定。 | 型ごとに違う |
ActiveIndicator: | bool型の項目を指定。Targetの値がValueと同じならTrue、違う場合はFalseになる。 | null |
HoverIndicator: | bool型の項目を指定。選択するとTrue、非選択だとFalseになる。 | null |
HoverVibrate: | レーザーが当たった時のコントローラー振動設定。 | Short |
Vibrate: | 押して、値を書き替えた時のコントローラー振動設定。 | Medium |
SetOnTouchBegin: | 押した瞬間に書き込む。 | 有効 |
SetOnTouchStay: | 押している間、書き込み続ける。 | 無効 |
SetOnTouchEnd: | 離した瞬間に書き込む。 | 無効 |
AcceptOutOfSightTouch: | 画面(視界)外でも操作できる。 | 無効 |
AcceptPhysicalTouch: | 手指で操作できる。 | 有効 |
AcceptRemoteTouch: | レーザーで操作できる。 | 有効 |
EditModeOnly: | 編集モードの時だけ操作できる。 | 無効 |
ActiveUserRootOnly: | ユーザーの中にある時、そのユーザーのみが操作できる。 | 無効 |
・使い方
ボタンにしたいスロットにアタッチ。(書き替えたい型を選択する。)
そのスロットか子スロットにコライダーがあれば反応する。
Targetを指定して、Valueを設定する。
・補足
Targetの書き替えは、ドライブ処理ではなく押した瞬間に書き替えるライト処理です。(ButtonValueSetコンポーネントでも似たようなことができる。)
ActiveIndicatorは指定先の値がValueと同じだとTrueになる。操作パネル等のUIを作る際にこの機能を活用することで、選択状態の表示等が簡単に実装できる。
・Neos Wiki リンク
https://wiki.neosvr.com/TouchValueOption_(Component)
・Neos Wiki リンク 複合型について
https://wiki.neosvr.com/Complex_Types_in_Components/ja
おわり
以上で第五回は終了です。拙文ではございますが、最後までご覧頂きありがとうございました。
UIやUIX等にもボタンがありますが、今回は紹介しませんでした。(まだまだ勉強中です。)
次回は各種ボタンインタラクション(音を鳴らしたり、値を書き替えたりできる。)コンポーネントを紹介予定です。
お楽しみに!