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.

Locomozione XR base

Per la locomozione di base continueremo a utilizzare la nostra libreria Godot XR Tools. La libreria contiene sia funzionalità di movimento di base sia funzionalità più avanzate.

Aggiungere il corpo del nostro giocatore

Il primo passo da fare è aggiungere un nodo ausiliare al nostro nodo XROrigin3D. Poiché XR supporta il tracciamento roomscale, non è possibile aggiungere la configurazione XR a un nodo CharacterBody3D e aspettarsi che tutto funzioni. Si verificheranno problemi quando l'utente si muove nel proprio spazio fisico e non si trova più al centro della stanza. Godot XR Tools incorpora la logica necessaria in un nodo ausiliare chiamato PlayerBody.

Seleziona il tuo nodo XROrigin3D e clicca sul pulsante Instantiate Child Scene per aggiungere una scena figlia. Seleziona addons/godot-xr-tools/player/player_body.tscn e aggiungi questo nodo.

Aggiungere un pavimento

Questo nodo controlla il movimento del personaggio all'interno del gioco e reagirà immediatamente alla gravità. Quindi, per evitare che il nostro giocatore cada all'infinito, aggiungeremo subito un pavimento alla nostra scena.

Cominciamo aggiungendo un nodo StaticBody3D al nostro nodo radice e lo rinominiamo in Floor. Aggiungiamo un nodo MeshInstance3D come nodo figlio del nostro Floor. Quindi creiamo un nuovo PlaneMesh come sua mesh. Per ora impostiamo le dimensioni della mesh a 100 x 100 metri. Successivamente aggiungiamo un nodo CollisionShape3D come nodo figlio del nostro Floor. Quindi creiamo un BoxShape per la nostra forma. Impostiamo le dimensioni di questa forma a riquadro a 100 x 1 x 100 metri. Dobbiamo anche spostare la nostra forma di collisione verso il basso di 0,5 metri in modo che il lato superiore del riquadro sia a filo con il pavimento.

Per rendere più facile vedere che ci stiamo effettivamente muovendo intorno al mondo, un pavimento bianco non basterà. Crea una texture tramite l'eccellente generatore di texture gratuito di Wahooney. Una volta creata la texture, aggiungila al progetto. Poi crea un nuovo materiale per il nodo MeshInstance3D, aggiungi la texture come albedo e abilita Triplaner sotto UV1 nelle proprietà del materiale.

../../_images/godot_xr_tools_floor.webp

Movimento diretto

Cominceremo ad aggiungere alcuni movimenti diretti di base alla nostra configurazione. Questo permetterà all'utente di muoversi nel mondo virtuale tramite l'input del joystick.

Nota

È importante notare che muoversi nel mondo virtuale mentre il giocatore rimane fermo nel mondo reale può provocare nausea, soprattutto per i giocatori inesperti con il VR. Le impostazioni predefinite delle funzioni di movimento sono piuttosto conservative. Consigliamo di attenersi a queste impostazioni predefinite, ma di offrire anche opzioni di gioco che consentono di abilitare impostazioni meno confortevoli per gli utenti più esperti, abituati ai giochi in VR.

We want to enable this on the right hand controller. We do this by adding a subscene to the right hand XRController3D node. Select addons/godot-xr-tools/functions/movement_direct.tscn as the scene to add.

Questa funzione aggiunge il movimento in avanti e indietro al giocatore tramite il joystick sul controller della mano destra. È disponibile anche un'opzione per aggiungere il movimento laterale a sinistra/destra, ma è normalmente disabilitata.

Invece, aggiungeremo la possibilità per il giocatore di ruotare anche con questo joystick. Aggiungeremo un'altra sotto-scena al nostro nodo controller, selezionando addons/godot-xr-tools/functions/movement_turn.tscn per questo.

Il sistema di rotazione, come predefinito, utilizza un approccio a scatti. Ciò significa che la rotazione avviene a scatti. Questo può sembrare brusco, ma è un metodo collaudato per combattere il mal di movimento. È possibile passare facilmente a una modalità che offre una rotazione più fluida modificando la proprietà mode sul nodo di rotazione.

Se avvii il gioco in questo momento, scoprirai che potrai muoverti liberamente nel mondo usando il joystick della mano destra.

Teleportazione

Un'alternativa al movimento diretto, che alcuni utenti trovano più piacevole, è la possibilità di teletrasportarsi in un'altra posizione all'interno del mondo di gioco. Godot XR Tools la supporta tramite l'apposita funzione di teletrasporto e la aggiungeremo al nostro controller della mano sinistra.

Aggiungi una nuova scena figlia al nodo XRController3D della mano sinistra selezionando la scena addons/godot-xr-tools/functions/function_teleport.tscn.

Avendo aggiunto questa scena, il giocatore potrà teletrasportarsi in giro per il mondo premendo il grilletto del controller della mano sinistra, puntando verso dove vuole andare e rilasciando il grilletto. Il giocatore potrà anche regolare l'orientamento tramite la levetta del controller della mano sinistra.

Se hai seguito correttamente tutte le istruzioni, la scena dovrebbe apparire più o meno così:

../../_images/godot_xr_tools_basic_movement.webp

Funzionalità di movimento più avanzate

Godot XR Tools aggiunge molte altre funzionalità di movimento, come il planare, l'implementazione di un rampino, un jetpack, meccaniche di arrampicata, ecc.

La maggior parte funziona in maniera simile alle funzionalità di movimento di base che abbiamo trattato finora; basta aggiungere la sotto-scena pertinente dall'estensione al controller che la implementa.

We'll look at some of these in more detail later on in this tutorial where additional setup is required (such as climbing) but for others please look at Godot XR Tools own help pages for details.