2020/09/12時点ではこちらが最新です。
takoyakiroom.hatenablog.com
- メディア:
今回は、いつものコントローラに飽きてきたので、別のモデルを使ってみる事にするよ。

まず、コントローラに使いたいモデルを作成。

作ったモデルをコントローラのオブジェクトに置く。
モデルには、Rigidbodyと、Colliderをつけておきます。
どちらも拳の中心に配置。
Rigidbodyは「IsKinematic」に

Colliderは「IsTrigger」にチェック。

んでは、作った手を動かして遊んでみよー!
まず、コントローラのオブジェクト「VRTK_ControllerEvents」・「VRTK_InteractGrab」・「VRTK_InteractTouch」をアタッチ。
で、Rigidbodyを「VRTK_InteractGrab」の「GontrollerAttachPoint」に、Colliderを「VRTK_InteractTouch」の「CustomColliderContainer」にセット。

「VRTK_SDKManager」の「ScriptAlias」の「LeftController」・「RightController」の設定は忘れないよう(よく忘れる・・・)

また、既存のコントローラのモデルは、無効にしておきましょー!

コントローラの動きを確かめる為のCubeを作って、Rigidbodyをつける・・・

Unityのメニューの「Window」→「VRTK」→「SetupInteractableObject」を選ぶ。
今回は「HoldButtonToGrab」と「FixedJoint」にしました。これでCubeがコントローラで掴めるようになります。

「FixedJoint」は、掴んだ時コントローラに固定される。デフォルトの「ChildOfController」でも同じような動きになるが、これは掴んだ時コントローラの子オブジェクトになります。
実行してみると、Cubeを掴んだ時に拳の真ん中に吸い付きます。

この位置が、前述のコントローラのRigidbodyの位置にあたります。
試しに、Rigidbodyを動かして、手のちょっと前にしてみると・・・

掴んだ時のCubeの位置が移動しているのがわかります。

なお、Cubeの「VRTK_FixedJointGrabAttach」の「PrecisionGrab」にチェックを入れると・・・

Rigidbodyの位置に左右されず、掴んだ部分にそのままくっつきます。

次に、Cubeの「VRTK_InteractableObject」の「TouchHighlightColor」の色を変えると・・・

触れた時に、色が変わります。

今回作ったモデルを置いておくので、使ってみてください。
https://drive.google.com/drive/folders/0Byq2RIkylpCQajBmUWdzS2pfZG8?usp=sharing
takoyakiroom.hatenablog.com
takoyakiroom.hatenablog.com