たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

カスタムコントローラを使ってみよう

2020/09/12時点ではこちらが最新です。
takoyakiroom.hatenablog.com



今回は、いつものコントローラに飽きてきたので、別のモデルを使ってみる事にするよ。

f:id:takoyakiroom:20170819222021j:plain

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

f:id:takoyakiroom:20170819222026j:plain

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

Rigidbodyは「IsKinematic」に

f:id:takoyakiroom:20170819223623j:plain

Colliderは「IsTrigger」にチェック。

f:id:takoyakiroom:20170819223627j:plain

んでは、作った手を動かして遊んでみよー!

まず、コントローラのオブジェクト「VRTK_ControllerEvents」・「VRTK_InteractGrab」・「VRTK_InteractTouch」をアタッチ。
で、Rigidbodyを「VRTK_InteractGrab」の「GontrollerAttachPoint」に、Colliderを「VRTK_InteractTouch」の「CustomColliderContainer」にセット。

f:id:takoyakiroom:20170819222126j:plain

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

f:id:takoyakiroom:20170819222132j:plain

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

f:id:takoyakiroom:20170819222222j:plain

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

f:id:takoyakiroom:20170819222136j:plain

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

f:id:takoyakiroom:20170819222140j:plain

「HoldButtonToGrab」は、ボタンを押している間だけ物がつかめる。チェックしていない場合は、ボタンを押す度に掴んだり、放したりする。
「FixedJoint」は、掴んだ時コントローラに固定される。デフォルトの「ChildOfController」でも同じような動きになるが、これは掴んだ時コントローラの子オブジェクトになります。

実行してみると、Cubeを掴んだ時に拳の真ん中に吸い付きます。

f:id:takoyakiroom:20170819222144j:plain

この位置が、前述のコントローラのRigidbodyの位置にあたります。

試しに、Rigidbodyを動かして、手のちょっと前にしてみると・・・

f:id:takoyakiroom:20170819222147j:plain

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

f:id:takoyakiroom:20170819222155j:plain

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

f:id:takoyakiroom:20170819222200j:plain

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

f:id:takoyakiroom:20170819222203j:plain

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

f:id:takoyakiroom:20170819222208j:plain

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

f:id:takoyakiroom:20170819222212j:plain

で、この触れたかどうかの当たり判定が、前述のColliderにあたります。

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



takoyakiroom.hatenablog.com
takoyakiroom.hatenablog.com