System teleportu — MRTK2
System teleportowania jest podsystemem mrTK, który obsługuje teleportowanie użytkownika, gdy aplikacja używa nieprzezroczystego wyświetlacza. W przypadku środowisk AR (takich jak HoloLens) system teleportacji nie jest aktywny. W przypadku immersyjnych środowisk HMD (OpenVR, WMR) można włączyć system teleportowania.
Włączanie i wyłączanie
System teleportowania można włączyć lub wyłączyć, przełączając pole wyboru w swoim profilu. Można to zrobić, wybierając obiekt MixedRealityToolkit w scenie, klikając pozycję "Teleport", a następnie przełączając pole wyboru "Włącz system teleportowania".
Można to również zrobić w czasie wykonywania:
void DisableTeleportSystem()
{
CoreServices.TeleportSystem.Disable();
}
void EnableTeleportSystem()
{
CoreServices.TeleportSystem.Enable();
}
Zdarzenia
System teleportowania uwidacznia zdarzenia za pośrednictwem interfejsu IMixedRealityTeleportHandler
, aby zapewnić sygnały dotyczące rozpoczęcia, zakończenia lub anulowania akcji teleportu.
Aby uzyskać więcej informacji na temat mechaniki zdarzeń i skojarzonego ładunku, zobacz dokumentację połączonego interfejsu API.
Użycie
Jak zarejestrować się w celu uzyskania zdarzeń teleportacji
Poniższy kod pokazuje, jak utworzyć monoBehaviour, który będzie nasłuchiwać zdarzeń teleportacji. W tym kodzie przyjęto założenie, że system teleportu jest włączony.
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);
}
}
Teleportowanie na platformie MRTK
Aby teleportować z kontrolerem na urządzeniach MR z domyślnymi konfiguracjami, użyj szminki. Aby teleportować z przegubowymi rękami, wykonaj gest z dłonią skierowaną do indeksu i kciuka przyklejając się na zewnątrz, kończąc teleport, zwijając palec indeksu. Aby teleportować z symulacją wejściową, zapoznaj się z zaktualizowaną dokumentacją usługi symulacji danych wejściowych.