カスタムコントローラを使ってみよう
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がコントローラで掴めるようになります。
「HoldButtonToGrab」は、ボタンを押している間だけ物がつかめる。チェックしていない場合は、ボタンを押す度に掴んだり、放したりする。
「FixedJoint」は、掴んだ時コントローラに固定される。デフォルトの「ChildOfController」でも同じような動きになるが、これは掴んだ時コントローラの子オブジェクトになります。
実行してみると、Cubeを掴んだ時に拳の真ん中に吸い付きます。
この位置が、前述のコントローラのRigidbodyの位置にあたります。
試しに、Rigidbodyを動かして、手のちょっと前にしてみると・・・
掴んだ時のCubeの位置が移動しているのがわかります。
なお、Cubeの「VRTK_FixedJointGrabAttach」の「PrecisionGrab」にチェックを入れると・・・
Rigidbodyの位置に左右されず、掴んだ部分にそのままくっつきます。
次に、Cubeの「VRTK_InteractableObject」の「TouchHighlightColor」の色を変えると・・・
触れた時に、色が変わります。
で、この触れたかどうかの当たり判定が、前述のColliderにあたります。
今回作ったモデルを置いておくので、使ってみてください。
https://drive.google.com/drive/folders/0Byq2RIkylpCQajBmUWdzS2pfZG8?usp=sharing
takoyakiroom.hatenablog.com
takoyakiroom.hatenablog.com