MRが楽しい

MRやVRについて学習したことを書き残す

MRTK v2のドキュメントを少しずつ読み解く MRTKでNearInteractionを追加する方法 その3

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。

MRTKv2のGuidesドキュメント

以下のドキュメントを読み進めていきます。
microsoft.github.io

以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io

本記事では以下のページを読み進めます。
microsoft.github.io
f:id:bluebirdofoz:20200312094520j:plain

MRTKでNearInteractionを追加する方法

NearInteractionスクリプトの例

タッチイベント

この例ではキューブを作成してタッチ可能にすることで、タッチで色を変更します。

public static void MakeChangeColorOnTouch(GameObject target)
{
    // Add and configure the touchable
    // タッチ可能を追加および構成
    var touchable = target.AddComponent<NearInteractionTouchableVolume>();
    touchable.EventsToReceive = TouchableEventType.Pointer;

    var material = target.GetComponent<Renderer>().material;
    // Change color on pointer down and up
    // ポインターの色を上下に変更します
    var pointerHandler = target.AddComponent<PointerHandler>();
    pointerHandler.OnPointerDown.AddListener((e) => material.color = Color.green);
    pointerHandler.OnPointerUp.AddListener((e) => material.color = Color.magenta);
}

f:id:bluebirdofoz:20200312094535j:plain

グラブイベント

以下の例は GameObject をドラッグ可能にする方法を示しています。
ゲームオブジェクトにコライダーが搭載されていると仮定します。

public static void MakeNearDraggable(GameObject target)
{
    // Instantiate and add grabbable
    // インスタンス化してグラブ可能を追加する
    target.AddComponent<NearInteractionGrabbable>();

    // Add ability to drag by re-parenting to pointer object on pointer down
    // ポインターオブジェクトの親を変更してドラッグする機能を追加します
    var pointerHandler = target.AddComponent<PointerHandler>();
    pointerHandler.OnPointerDown.AddListener((e) =>
    {
        if (e.Pointer is SpherePointer)
        {
            target.transform.parent = ((SpherePointer)(e.Pointer)).transform;
        }
    });
    pointerHandler.OnPointerUp.AddListener((e) =>
    {
        if (e.Pointer is SpherePointer)
        {
            target.transform.parent = null;
        }
    });
}

f:id:bluebirdofoz:20200312094545j:plain