3

Unity プロジェクトに 3D モデルがあり、キーボードの矢印キー (左/右) に基づいてカメラを回転させる JavaScript があります。

ここで、水平方向のスワイプ ハンド ジェスチャを検出し、カメラの回転に使用するベクトルを返すスクリプトが必要です。

PrimeSense OpenNI/NITE で ZigFu SDK を使用しています。ZigFu SDK にはサンプル スクリプトが付属しており、その 1 つに SwipeDetector があります。どのように機能するのでしょうか?

私のセットアップ:GameObjects 3D モデル、MainCamera、指向性ライトの 3 つがあります。

SwipeDetectorでは、プロジェクトでスクリプトを使用するにはどうすればよいでしょうか? 私が今それを行う方法は、1)空のゲームオブジェクト「SwipeDetection」を作成し、2) SwipeDetectorZigFuからスクリプトを「ドラッグアンドドロップ」します。スクリプトにログを入力しましたが、ログがSwipeDetector表示されません。

4

1 に答える 1

4

Zigfu バインディング (バージョン 1.4 を使用していると思いますか?) には SwipeDetector サンプルはありませんが、SwipeDetector MonoBehaviour は含まれています。SwipeDetector は垂直方向と水平方向のスワイプを検出しますが、残念ながらスワイプの速度は検出しません。

いくつかのオプションがあります:

  1. 提供されている Swipe Detector を使用し、水平方向のスワイプ (SwipeDetector_Left または SwipeDetector_Right イベント) を検出するたびにカメラを一定量だけ回転させます。

  2. 提供された Swipe Detector を使用し、Swipe で回転を開始し、SwipeDetector_Release イベントで回転を停止します。これは、矢印キーを押すのと似ています (keydown/keyup イベントで同じ動作をすると仮定します)。

  3. 手の速度を追跡し、スワイプが発生したときにその値を確認します。この値を使用してカメラを回転させます。新しい MonoBehaviour を作成し、Hand_Create、Hand_Update、および Hand_Destroy を実装することで、速度を追跡できます (HandpointControls フォルダー内のスクリプトを参照してください)。最後の n フレームからの手のポイントをキューに入れます。最新のポイントと最も古いポイントの間のデルタは、それらの n フレームの速度になります (15 フレーム、または約 0.5 秒から始めることをお勧めします)

(これは、将来の Zigfu リリースに含まれる予定です:))

ゲーム オブジェクトの設定は正しいようです。ログが表示されない場合は、「フォーカス ジェスチャ」が正しく実行されていない可能性があります。センサーに向かって手を振ったり、タップしたりしてみてください。これにより、Hand_Create イベントが呼び出されます。有効なハンドポイントを取得したら、Swipe Detector から適切なイベントを取得する必要があります。

また、スワイプ検出ゲーム オブジェクトには HandPointControl コンポーネント (RequireComponent で暗黙的に追加) が必要であり、「ActiveOnStart」が true である必要があることにも言及する価値があります。

于 2012-02-08T06:31:28.803 に答える