Система телепорта — MRTK2

Система телепорта — это вложенная система MRTK, которая обрабатывает телепортирование пользователя, когда приложение использует непрозрачный дисплей. В интерфейсах AR, например HoloLens, система телепортации неактивна. В интерфейсах виртуальных шлемов, например OpenVR, Windows Mixed Reality, систему телепортации можно включить.

Включение и выключение

Систему телепортации можно включить или выключить, используя флажок в ее профиле. Для этого выберите объект MixedRealityToolkit в сцене, нажмите "Телепортация", а затем установите флажок "Включить систему телепортации".

Это можно сделать и во время работы:

void DisableTeleportSystem()
{
    CoreServices.TeleportSystem.Disable();
}

void EnableTeleportSystem()
{
    CoreServices.TeleportSystem.Enable();
}

События

Система телепортации предоставляет события с помощью интерфейса IMixedRealityTeleportHandler, чтобы передавать сигналы о начале, завершении или отмене действий телепортации. Дополнительные сведения о работе событий и о связанных с ними полезных данных см. в документации по соответствующему API.

Использование

Как регистрировать события телепортации

На примере кода ниже показано, как создать прослушиватель MonoBehaviour для событий телепортации. Для этого кода предполагается, что система телепортации включена.

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Teleport;
using UnityEngine;

public class TeleportHandlerExample : MonoBehaviour, IMixedRealityTeleportHandler
{
    public void OnTeleportCanceled(TeleportEventData eventData)
    {
        Debug.Log("Teleport Cancelled");
    }

    public void OnTeleportCompleted(TeleportEventData eventData)
    {
        Debug.Log("Teleport Completed");
    }

    public void OnTeleportRequest(TeleportEventData eventData)
    {
        Debug.Log("Teleport Request");
    }

    public void OnTeleportStarted(TeleportEventData eventData)
    {
        Debug.Log("Teleport Started");
    }

    void OnEnable()
    {
        // This is the critical call that registers this class for events. Without this
        // class's IMixedRealityTeleportHandler interface will not be called.
        CoreServices.TeleportSystem.RegisterHandler<IMixedRealityTeleportHandler>(this);
    }

    void OnDisable()
    {
        // Unregistering when disabled is important, otherwise this class will continue
        // to receive teleportation events.
        CoreServices.TeleportSystem.UnregisterHandler<IMixedRealityTeleportHandler>(this);
    }
}

Телепортирование в MRTK

Чтобы телепортироваться с помощью контроллера на устройствах смешанной реальности с конфигурациями по умолчанию, используйте стик. Чтобы телепортироваться с шарнирными руками, сделайте жест ладонью, обращенной вверх с индексом и большим пальцем, торчащим наружу, завершив телепорт, свергая указательный палец. Сведения о телепорте с имитацией ввода см. в обновленной документации по службе имитации входных данных.

Жест телепорта