Transform/Interaction/PhysicalButton

Last-modified: 2025-06-19 (木) 21:22:29


PhysicalButton (フィジカル ボタン)

動く押しボタンが作れるコンポーネント


項目

Enabled:
このコンポーネントを有効にするかどうか。

PressAxis:
押す方向。初期設定はz1(前方向)。
z-1に設定すると逆方向に動く。各軸を組み合わせると、斜めに動かしたりもできる。

AcceptPhysicalTouch:
手指で操作できる。
アバターの人差し指第一関節に押す側のコンポーネントが付いてる。(アバターセットアップ時、手指判定の初期位置は基本的にズレてます。正しい位置に合わせるには、人差し指をの設定を調整する必要があります。)

AcceptRemoteTouch:
レーザーで操作できる。

AcceptOutOfSightTouch:
画面(視界)外でも操作できる。
Falseだと、顔をボタンに向けている時だけ押せる。
Trueだと、ボタンが視界の外でも押せる。

EditModeOnly:
編集モードの時だけ操作できる。

ActiveUserFilter:
ユーザーの中にあるとき、操作できるかできないかを指定する。
0Disabled無効
1OnlyActiveUserユーザーの中にあるとき、そのユーザーだけ操作できる。ユーザーの中にないとき、誰も操作できない。
2ActiveUserWhenPresentユーザーの中にあるとき、そのユーザーだけ操作できる。ユーザーの中にないとき、誰でも操作できる。
3ExcludeActiveUserユーザーの中にあるとき、そのユーザーだけ操作できない。ユーザーの中にないとき、誰でも操作できる。

__legacyActiveUserRootOnly:
???

Pressed:
押した時に、別のボタンを働かせる。

通常は使用しないです。
使う場合はボタンのSyncDelegateを探しましょう。
UIXやFluxノード等を分解すると見つけられます。


Pressing:
押してる間、別のボタンを働かせる。

Released:
押し終わった時に、別のボタンを働かせる。

PressDepth:
押したときに凹む深さ。

PressThreshold:
押した時に反応するしきい値。

ReleaseThreshold:
離した時に反応するしきい値。

IsPressed:
状態。押されてる。

IsHovering:
状態。レーザーが当たってる。

IsHolding:
状態。保持してる。

IsPressedOrHolding:
状態。押されてる、あるいは保持してる。

Hold:
保持する。(一回押すと保持する。もう一回押すと解除される。)
TouchToggleみたいな使い方ができる。

HoldDeothRatio:
保持してる時の凹む深さの割合。

BeginPressVibration:
押し始めた時のコントローラー振動設定。

振動設定は4種類ある。実際にコントローラの振動を確認しながら設定すると良い。

0None
1Short
2Medium
3Long

PressVibration:
押した時のコントローラー振動設定。

HoverVibration:
レーザーを当てた時のコントローラー振動設定。

Label:
???

_currentPressingDepth:
状態。現在の押されている深さの割合。(0~1)
レーザーでトリガーした場合は、押したか押してないかの2状態ですが、手指で押す場合は中間の値も取れます。

_buttonOffset:
ボタンの位置調整。(初期設定は自スロットのPosition)

_buttonPosition:
ボタン位置の駆動先。(初期設定は自スロットのPosition)
アタッチすると自動で設定される。
駆動先は手動で変更可能。


使用例

  • 押しボタンにしたいスロットにアタッチ。(Colliderも必要。)


その他

  • とりあえずボタンを作るのであれば、TouchButtonを使用しましょう。
    PhysicalButtonは物理的に動かせるボタンが作れる、多機能で複雑なコンポーネントです。
  • 手指で押すときはコライダー外周ではなく、スロットの原点位置で反応する。(レーザーのときはコライダー外周で反応する。)
  • Grabbableと同じところにアタッチすると掴めなくなるので、子スロットを作るなどして工夫が必要。
  • 同一のスロットに、同じ又は違うボタン類コンポーネントをアタッチすると、片方しか動作しません。TouchEventRelayを使用することで、複数のボタン等を組み合わせて使用できます。
  • ボタン専用のFluxノードが有ります。
  • 公式Wiki ボタンイベント