Teleportování – MRTK2

Teleportovací systém je podsystém MRTK, který zpracovává teleportování uživatele, když aplikace používá neprůsedný displej. V případě rozšířeného přihlašování (jako holoLens) není teleportační systém aktivní. Pro imerzivní prostředí HMD (OpenVR, WMR) je možné povolit teleportovací systém.

Povolení a zakázání

Systém teleportu lze povolit nebo zakázat přepnutím zaškrtávacího políčka v jeho profilu. Můžete to provést tak, že ve scéně vyberete objekt MixedRealityToolkit, kliknete na "Teleportovat" a pak zaškrtnete políčko "Povolit teleportovací systém".

Můžete to provést také za běhu:

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

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

Události

Systém teleportování zveřejňuje události prostřednictvím IMixedRealityTeleportHandler rozhraní, aby poskytoval signály o zahájení, ukončení nebo zrušení teleportovaných akcí. Další podrobnosti o mechanismu událostí a jejich přidružené datové části najdete v dokumentaci k propojenému rozhraní API.

Využití

Jak se zaregistrovat k událostem teleportace

Následující kód ukazuje, jak vytvořit monobehaviour, který bude naslouchat událostem teleportace. Tento kód předpokládá, že je teleportovací systém povolený.

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

Teleportování na MRTK

Pokud se chcete teleportovat s kontrolerem na zařízeních MR s výchozími konfiguracemi, použijte thumbstick. Pokud chcete teleportovat s artilovanýma rukama, udělejte gesto s dlaní směrem nahoru a ukazováčkem vyčníváním směrem ven a teleportování dokončíte zakroucením ukazováčku. Pokud chcete teleportovat se simulací vstupu, projděte si naši aktualizovanou dokumentaci ke službě Input Simulation Service.

Gesto teleportu