Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Locomoção XR básica

Para locomoção básica, continuaremos usando nossa biblioteca Godot XR Tools. A biblioteca contém tanto recursos de movimento básico quanto recursos mais avançados.

Adicionando nosso corpo de jogador

O primeiro passo que precisamos dar é adicionar um nó auxiliar ao nosso nó XROrigin3D. Como o XR suporta rastreamento em escala de ambiente (roomscale), você não pode simplesmente adicionar sua configuração de XR a um nó CharacterBody3D e esperar que as coisas funcionem. Você terá problemas quando o usuário se mover pelo seu espaço físico e não estiver mais no centro da sala. O Godot XR Tools incorpora a lógica necessária em um nó auxiliar chamado PlayerBody.

Selecione seu nó XROrigin3D e clique no botão Instantiate Child Scene para adicionar uma cena filha. Selecione addons/godot-xr-tools/player/player_body.tscn e adicione este nó.

Adicionando um piso

Este nó governa o movimento do seu personagem no jogo e reagirá imediatamente à gravidade. Então, para evitar que nosso jogador caia infinitamente, adicionaremos rapidamente um chão à nossa cena.

Começamos adicionando um nó StaticBody3D ao nosso nó raiz e o renomeamos para Chão. Adicionamos um nó MeshInstance3D (Instância de malha 3D) como nó filho do nosso Chão. Depois criamos um PlaneMesh (Malha plana) como sua malha. Por enquanto, definimos o tamanho da malha para 100 x 100 metros. Em seguida, adicionamos um nó CollisionShape3D (Forma de Colisão 3D como nó filho do nosso Chão. Depois criamos uma BoxShape (Forma de Caixa) como nossa forma. Definimos o tamanho dessa caixa para 100 x 1 x 100 metros. Também precisamos mover nossa forma de colisão 0.5 metros para baixo para que a parte superior da caixa fique alinhada com o chão.

To make it easier to see that we're actually moving around our world, a white floor isn't going to do it. Create a texture using Wahooneys excellent free texture generator. Once you've created the texture add it to your project. Then create a new material for the MeshInstance3D node, add your texture as the albedo, and enable Triplanar under UV1 in the material properties.

../../_images/godot_xr_tools_floor.webp

Movimento direto

Vamos começar a adicionar um movimento direto básico à nossa configuração. Isso permite que o usuário se mova pelo mundo virtual usando a entrada do analógico (joystick).

Nota

É importante notar que mover-se pelo mundo virtual enquanto o jogador está parado no mundo real pode induzir náuseas, especialmente para jogadores novos em VR. As configurações padrão em nossas funções de movimento são bastante conservadoras. Aconselhamos você a manter esses padrões, mas oferecer recursos no jogo para ativar configurações menos confortáveis para usuários mais experientes que estão acostumados a jogar jogos em VR.

Queremos ativar isso no controlador da mão direita. Fazemos isso adicionando uma subcena ao nó XRController3D da mão direita. Selecione addons/godot-xr-tools/functions/movement_direct.tscn como a cena a ser adicionada.

Esta função adiciona movimento para frente e para trás ao jogador usando o analógico do controlador da mão direita. Ela tem uma opção para também adicionar deslocamento lateral (strafe) para a esquerda/direita, mas por padrão isso está desativado.

Em vez disso, vamos adicionar a capacidade de o jogador também girar com este analógico. Adicionaremos outra subcena ao nosso nó de controlador; selecione addons/godot-xr-tools/functions/movement_turn.tscn para isso.

O sistema de rotação por padrão usa uma abordagem de rotação em incrementos (snap turn). Isso significa que a rotação acontece em etapas. Isso pode parecer chocante, no entanto, é um método testado e comprovado para combater o enjoo por movimento (motion sickness). Você pode facilmente alternar para um modo que oferece rotação suave alterando a propriedade mode no nó de rotação.

Se você executar seu jogo neste momento, verá que pode se mover pelo mundo livremente usando o analógico da mão direita.

Teleporte

Uma alternativa ao movimento direto que alguns usuários acham mais agradável é a capacidade de se teletransportar para outro local dentro do mundo do seu jogo. O Godot XR Tools suporta isso através da função de teletransporte e nós a adicionaremos ao nosso controlador da mão esquerda.

Adicione uma nova cena filha ao nó XRController3D da sua mão esquerda selecionando a cena addons/godot-xr-tools/functions/function_teleport.tscn.

Com esta cena adicionada, o jogador poderá se teletransportar pelo mundo pressionando o gatilho no controlador da mão esquerda, apontando para onde deseja ir e depois soltando o gatilho. O jogador também pode ajustar a orientação usando o analógico do controlador da mão esquerda.

Se você seguiu todas as instruções corretamente, sua cena agora deve ficar mais ou menos assim:

../../_images/godot_xr_tools_basic_movement.webp

Recursos de movimento mais avançados

O Godot XR Tools adiciona muitos outros recursos de movimento, como planeio (gliding), uma implementação de gancho de escalada (grapple hook), uma mochila a jato (jetpack), mecânicas de escalada, etc.

A maioria funciona de forma semelhante aos recursos de movimento básicos que lidamos até agora; basta adicionar a subcena relevante do plugin ao controlador que a implementa.

Analisaremos alguns deles com mais detalhes mais adiante neste tutorial, onde uma configuração adicional é necessária (como escalada), mas para outros, consulte as próprias páginas de ajuda do Godot XR Tools para obter detalhes.