Sistema di teletrasporto

Il sistema di teletrasporto è un sottosistema di MRTK che gestisce il teletrasporto dell'utente quando l'applicazione usa uno schermo opaco. Per le esperienze ar (ad HoloLens), il sistema di teletrasporto non è attivo. Per esperienze HMD immersive (OpenVR, WMR) è possibile abilitato il sistema di teletrasporto.

Abilitazione e disabilitazione

Il sistema di teletrasporto può essere abilitato o disabilitato attivando o disattivando la casella di controllo nel profilo. A tale scopo, selezionare l'oggetto MixedRealityToolkit nella scena, fare clic su "Teleport" e quindi attivare o disattivare la casella di controllo "Enable Teleport System" (Abilita sistema di teletrasporto).

Questa operazione può essere eseguita anche in fase di esecuzione:

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

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

Eventi

Il sistema di teletrasporto espone gli eventi tramite l'interfaccia per fornire segnali quando le azioni di IMixedRealityTeleportHandler teletrasporto iniziano, terminano o vengono annullate. Per altri dettagli sui meccanismi degli eventi e sul payload associato, vedere la documentazione dell'API collegata.

Utilizzo

Come registrarsi per gli eventi di teletrasporto

Il codice seguente illustra come creare un oggetto MonoBehaviour che sarà in ascolto degli eventi di teletrasporto. Questo codice presuppone che il sistema di teletrasporto sia abilitato.

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);
    }
}

Teletrasporto su MRTK

Per teletrasportare con un controller nei dispositivi MR con configurazioni predefinite, usare la levetta. Per teletrasportarti con le mani articolate, fai un movimento con il palmo rivolto verso l'alto con l'indice e il pollice che si fiocchi verso l'esterno, completando il teletrasporto arricciando il dito indice. Per teletrasportare con la simulazione di input, vedere la documentazione aggiornata del servizio di simulazione input.

Movimento di teletrasporto