Sistema de teletransporte – MRTK2

O sistema de teletransporte é um subsistema de MRTK que trata de teletransportar o utilizador quando a aplicação está a utilizar um ecrã opaco. Para experiências de AR (como o HoloLens), o sistema de teletransporte não está ativo. Para experiências HMD envolventes (OpenVR, WMR), o sistema de teletransporte pode ser ativado.

Ativar e desativar

O sistema de teletransporte pode ser ativado ou desativado ao alternar a caixa de verificação no respetivo perfil. Isto pode ser feito ao selecionar o objeto MixedRealityToolkit na cena, ao clicar em "Teleportar" e, em seguida, ao alternar na caixa de verificação "Ativar Sistema de Teletransporte".

Isto também pode ser feito no runtime:

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

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

Evento

O sistema de teletransporte expõe eventos através da IMixedRealityTeleportHandler interface para fornecer sinais quando as ações de teletransporte começam, terminam ou são canceladas. Veja a documentação da API ligada para obter mais detalhes sobre a mecânica dos eventos e o payload associado.

Utilização

Como se registar em eventos de teletransporte

O código abaixo mostra como criar um MonoBehaviour que irá escutar eventos de teletransporte. Este código pressupõe que o sistema de teletransporte está ativado.

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

Teletransportar no MRTK

Para teletransportar com um controlador em dispositivos MR com configurações predefinidas, utilize o thumbstick. Para teletransportar com as mãos articuladas, faça um gesto com a palma da mão virada para cima com o índice e o polegar colados para fora, completando o teleporto enrolando o dedo do índice. Para teletransportar com a simulação de entrada, veja a nossa documentação atualizada do Serviço de Simulação de Entrada.

Gesto de Teletransporte