本文へスキップ

Inverse3 およびVerseGripカーソル

Haply Inverse Unity Packageは、Inverse3 およびVerseGripデバイス専用のカーソルコンポーネントを提供し、Unity環境での精密な制御とインタラクションを可能にします。 このコンポーネントである「Inverse3 Cursor」と「VerseGrip Cursor」は、各デバイスコントローラーからのデータに基づいて、ゲームオブジェクトの位置や回転を動的に調整するように設計されています。

概要​

カーソルコンポーネントは、物理的なHaply デバイスとUnityの仮想ゲームオブジェクトをつなぐ架け橋としての役割を果たし、デバイスの位置や回転データをゲームオブジェクトの動きや向きに変換します。 この変換により、ユーザーは直感的な方法で仮想環境とインタラクションすることができ、実際の動きがそのまま仮想空間での反応として反映されます。

CursorBase クラス​

カーソルコンポーネントの中核には CursorBase クラスがあり、このクラスは Inverse3Cursorわあ VerseGripCursorが共通して使用する基本機能を提供します。 これには、デバイスの接続管理、モデルのインスタンス化、可視性の制御が含まれます。

主なプロパティとメソッド​

  • デバイス:カーソルを制御するデバイスと接続され、実行時に自動的に設定されます。
  • モデルプレハブ: カーソルモデルに使用するプレハブを指定します。このプレハブは ModelParentのインスタンスとして自動的に生成されます。
  • ModelParent: インスタンス化されたモデル・プレハブの親トランスフォームを定義します。設定しない場合は、カーソルのトランスフォームがデフォルトとして使用されます。
  • モデル: シーン内の既存のカーソルモデルを直接参照します。設定すると ModelPrefabのインスタンス化をスキップします。
  • HideControllerModel:カーソルモデルの表示/非表示を制御し、ゲームプレイの要件に応じて動的に表示または非表示にすることができます。
  • 半径:カーソルモデルが球体の場合、その半径を表し、モデルのメッシュ境界から計算されます。
  • 滑らかさ: PositionSmoothnessわあ RotationSmoothnessは、カーソルの位置や回転を滑らかにするオプションを提供し、ユーザー体験を向上させます。

注:予期しない動作を防ぐためには、Cursor コンポーネントで Cursor Model を正しく参照することが非常に重要です。

カーソル

Haptic Rigで生成されたデフォルトのカーソルモデルには、3つの軸を表す色のついた点が表示されます:Forward(青)、Up(緑)、Right(赤)。このデザインは、仮想環境においてデバイスの向きを視覚的に把握するのに役立ちます。キャリブレーション済みのVerseGripの場合、Forwardは指し示す方向と一致し、Upは上面と一致している必要があります。

Inverse3 Cursor コンポーネント​

Inverse3CursorInverse3 デバイスに特化しており、Unity内でカーソルのローカル位置をデバイスの実際の位置に合わせて更新します。

PositionSmoothness 設定でカーソルの動きの滑らかさを調整でき、実際の動きに対するカーソルの反応性を制御することで、ユーザー体験を向上させます。

VerseGrip Cursor コンポーネント​

VerseGripCursorVerseGripデバイスによって機能を拡張し、Unity上でカーソルの回転をデバイスの実際の回転に合わせて更新します。

useDeviceLocalSpace この設定を使用すると、ワールドの方向と親オブジェクトの方向のいずれかをカーソルの整列方法として選択できるため、デザインの柔軟性が高まります。

RotationSmoothness この設定は、カーソルの回転の滑らかさを制御し、開発者がVerseGripの実際の方向変化に対するカーソルの反応性を微調整できるようにします。

実装の詳細​

初期化時 Modelこれが割り当てられていない場合、カーソルコンポーネントは指定された ModelPrefabを ModelParentのインスタンスとして生成し、シーン上で視覚的に表示されるようにします。 これらのコンポーネントは、接続された デバイスコントローラデバイスと同期し、実際のデバイスの動きに合わせて、カーソルの位置と回転をリアルタイムで調整します。

2つのコンポーネントを同じGameObjectにアタッチして、そのオブジェクトの位置や回転を制御することも、用途に応じて別々のGameObjectにアタッチすることも可能です。これにより、開発者はUnity上で没入感のあるハプティック体験を実現するための多目的ツールを活用することができます。