VRTK4.0Beta 1軸アクションの追加

次はいよいよVR空間内で物を持つ処理に入りますが、準備がものすごく大変です・・・
まずは第一歩として、コントローラのトリガ入力を処理できるようにセットアップを行います

前回の記事「VRTK4.0Beta テレポータの追加」の続きとなります。
前回の記事はこちら

今回は以下のドキュメントをもとに進めていきます
https://academy.vrtk.io/Documentation/HowToGuides/Actions/AddingAUnityAxisAction/

インプット定義の確認

トリガー入力が処理できるように、インプット定義が追加されているか確認します。
VRTKをプロジェクトに取り込めば、自動で追加されているはずです。
(確認ダイアログで拒否しない限り・・・)

上記の定義が存在しない場合
Main Menu -> Window -> VRTK -> Manage Input Mappings
で、ダイアログにアクセスできます

動作確認用オブジェクトの追加

新規ゲームオブジェクトでSphereを追加します

マテリアルを新規で作成し、RenderModeを「Transprent」に設定、その後、Sphereオブジェクトに適用します
ここではわかりやすいように赤色にしました

イベント処理用オブジェクト追加

トリガーボタンのイベントを処理するためのオブジェクトを作成します
Empty Objectを作成し、名前を「TriggerPress」にしました。

TriggerObjectに「Unity Axis 1D Action」を追加します。
ここまでの操作で、以下のような画面になっていると思います

スクリプトの追加

トリガー入力に応じてマテオリアルの透明度が変化する処理をスクリプトで記述します。
公式ページのコピペで動きます

OpacityChanger.cs

using UnityEngine;

public class OpacityChanger : MonoBehaviour
{
    public Material target;

    public void UpdateOpacity(float alphaValue)
    {
        Color color = target.color;
        color.a = alphaValue;
        target.color = color;
    }
}

作成したスクリプトは「TriggerPress」へアタッチします

トリガーイベントの設定

Unity Axis 1D Actionの「Value Change(Single)」にイベントを追加し、Opacity Changeスクリプトを設定します。
言葉だとわかりにくいので、下記スクリーンショットを参照してください

イベント発生時の呼び出しメソッドには
Opacity Changer > UpdateOpacity
を選択します。
別途 UpdateOpacity (float) という名前のメソッドも表示されますが、こちらと間違えないように注意!

その他の設定

最後に、トリガーで変化する対象のマテリアルと、トリガーのインプットIDを紐づけます

以上です

以上の設定で、右コントローラのトリガを引くと、赤い球の透明度が変化する処理ができました。
早速実行して、動作を確かめましょう!

いかがでしたでしょうか?
トリガーの入力に応じて透明度が変化したと思います。

これでトリガーボタンの処理が行えるようになりました。
次回はトリガー入力をブール値に変換する処理を行います