Exercício – Manipular objetos 3D usando o controle bounds
O ObjectManipulator script torna um objeto móvel, escalonável e rotacionável usando uma ou duas mãos. Esse script dá suporte ao modelo de entrada de manipulação direta porque permite que o usuário toque em hologramas diretamente com as mãos. Aqui, use ObjectManipulator para habilitar interações à mão para que você possa mover, dimensionar e girar o explorador de rover.
Além disso, você irá configurar o Rover Explorer para que seja possível posicionar as partes do rover no próprio Rover, montando assim o conjunto completo. No painel de Hierarquia, expanda o objeto RoverExplorer >RoverParts e selecione todos seus objetos filho de partes do rover e o objeto RoverAssembly. Em seguida, no painel de Inspetor, use o botão Adicionar Componente para adicionar os seguintes componentes a todos os objetos selecionados:
- Componente Manipulador de Objetos (Script)
- Componente do Controlador de Montagem de Parte (Script)
Com todos os objetos de parte do rover e o objeto RoverAssembly ainda selecionados, no painel Inspetor, configure o componente Manipulador de Objeto (Script) da seguinte maneira:
Em Configurações interativas básicas, localize o evento On Clicked (). Selecione o ícone + para adicionar um novo evento. Configure o evento da seguinte maneira:
a. Atribua o objeto RoverAssembly como ouvinte do evento On Clicked (), arrastando-o da Hierarquia para o campo Nenhum (Objeto).
b. Na lista suspensa Sem função, selecione TapToPlace>StartPlacement() para chamar esse método quando o evento for acionado.
Na lista suspensa Tipo de Manipulação Permitida, desmarque a lista de seleção Dimensionar para que somente Mover e Girar estejam habilitados:
Selecione apenas o objeto RoverAssembly e remova o componente Interativo com Estado dele, caso exista. Selecione os três pontos na extrema direita do componente e, em seguida, selecione Remover Componente.
No painel Projeto, navegue até a pasta Pacotes>MRTK Standard Assets>Audio>HoloLens2 para localizar os clipes de áudio:
No painel Hierarquia, reelege todos os objetos de parte do rover e, em seguida, no painel Inspetor, selecione Adicionar Componente para adicionar o componente Fontes de Áudio e configurá-lo da seguinte maneira:
- Atribua o clipe de áudio MRTK_Scale_Start ao campo AudioClip .
- Desmarque a caixa de seleção Reproduzir no Modo Ativo.
- Altere o Blend Espacial para 1.
No painel Hierarquia, expanda o objeto RoverAssembly >RoverModel_PlacementHints_XRray> Parts_PlacementHints para revelar todos os objetos de dica de posicionamento. Então, selecione a primeira parte do rover, RoverParts>Camera_Part e configure o componente Controlador de Assembly de Parte (Script) da seguinte maneira:
- Atribua o objeto Camera_PlacementHint ao campo Local para Posicionar .
Repita a etapa 5 para cada um dos componentes restantes do rover e o objeto RoverAssembly para configurar o componente Controlador de Montagem de Parte (Script) da seguinte maneira:
- Para o Generator_Part, atribua o objeto Generator_PlacementHint ao campo Local para Posicionar .
- Para o Lights_Part, atribua o objeto Lights_PlacementHint ao campo Local para Posicionar .
- Para o UHFAntenna_Part, atribua o Objeto UHFAntenna_PlacementHint ao campo Local para Posicionar.
- Para o Spectrometer_Part, atribua o objeto Spectrometer_PlacementHint ao campo Local para Posicionar.
- Para o RoverAssembly, atribua o objeto em si, ou seja, o mesmo objeto RoverAssembly, ao campo Local para Posicionar .
No painel Hierarquia, selecione o objeto de botão RoverExplorer > Botões >Redefinir e, no painel Inspetor, configure o evento PressableButton OnClicked () da seguinte maneira:
- Atribua o objeto RoverAssembly ao campo Nenhum (Objeto ).
- Na lista suspensa Sem Função, selecione PartAssemblyController>ResetPlacement () para definir essa função como a ação a ser executada quando o evento for disparado.
Se você agora entrar no modo de jogo, poderá usar a interação de perto ou de longe para colocar as partes do veículo explorador no rover. Depois que a peça estiver próxima à dica de posicionamento correspondente, ela se encaixará no lugar e se tornará parte do Rover. Para redefinir os posicionamentos, você pode pressionar o botão Redefinir:
Adicionar controle de limites
Na janela Hierarquia, selecione o objeto RoverExplorer e, na janela Inspetor, use o botão Adicionar Componente para adicionar o componente BoundsControl . Desmarque a caixa de seleção ao lado do componente para desabilitá-la por padrão:
Na janela Projeto, navegue até a pasta Pacotes>Manipulação Espacial MRTK>BoundsControl>Prefabs, então clique e arraste o prefab BoundingBoxWithHandles no campo Prefab de Visuais de Limites do componente Controle de Limites.
No painel Hierarquia, expanda o objeto Menu>Buttons-GridLayout (Botões) para revelar os três botões. Renomeie o terceiro botão para BoundsControl_Enable e, na janela Hierarquia, configure o objeto BoundsControl_Enable jogo da seguinte maneira :
- Selecione o objeto Frontplate > AnimatedContent > Icon > Label e altere o componente TextMeshPro para Habilitar. Verifique se o objeto Label está ativado na hierarquia.
- Configure o evento PressableButton.OnClicked() atribuindo o objeto RoverExplorer ao campo Nenhum (Objeto) e selecionando o booliano de BoundsControl> como Habilitado no menu suspenso Sem Função (verifique se a caixa de seleção do argumento está marcada).
- Selecione o ícone pequeno + para adicionar outro evento.
- Atribua o objeto RoverExplorer ao campo None (Object ).
- Na lista suspensa Sem Função, selecione o booliano de ObjectManipulator> como Habilitado para atualizar esse valor de propriedade quando o evento for disparado e verifique se a caixa de seleção do argumento está marcada.
- Selecione o ícone pequeno + para adicionar outro evento.
- Atribua o objeto RoverExplorer ao campo None (Object ).
- Na lista suspensa No Function, selecione BoundsControl>bool HandlesActive para atualizar o valor dessa propriedade quando o evento for acionado e verifique se a caixa de seleção do argumento está marcada.
- Selecione o objeto Frontplate > AnimatedContent > Icon > UIButtonFontIcon e altere o ícone para o ícone de quatro setas no componente Seletor de Ícones de Fonte. Você pode encontrá-lo na lista de ícones ou definir o Nome do Ícone Atual como Ícone 40.
Duplicar o botão BoundsControl_Enable e renomeá-lo para BoundsControl_Disable e, em seguida, no painel Inspetor, configure o componente Auxiliar de Configuração do Botão (Script) da seguinte maneira:
- Selecione o objeto Frontplate > AnimatedContent > Icon > Label e altere o componente TextMeshPro para Desabilitar.
- Configure o evento PressableButton.OnClicked() verificando se todas as caixas de seleção nos eventos estão desmarcadas.
Se você entrar no modo de jogo e selecionar Habilitar para habilitar o Controle de Limites, poderá usar a interação próxima ou distante para mover, girar e dimensionar o Controle de Limites e selecionar Desabilitar para desabilitar o Controle de Limites novamente:











