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.

Scena del giocatore e azioni di input

Nelle prossime due lezioni, progetteremo la scena del giocatore, registreremo azioni di input personalizzate, e scriveremo il codice per il movimento del giocatore. Alla fine, avrai un personaggio giocabile in grado di muoversi in otto direzioni.

Crea una nuova scena andando nel menu Scena in alto a sinistra e cliccando su Nuova scena.

../../_images/new_scene.webp

Clicca sul pulsante Altro nodo e seleziona il tipo di nodo CharacterBody3D per creare un CharacterBody3D come nodo radice.

../../_images/add_character_body3D.webp

Rinomina il nodo CharacterBody3D in Player. I nodi di tipo CharacterBody sono complementari alle aree e ai corpi rigidi utilizzati nel tutorial di gioco 2D. Come i corpi rigidi, questi possono muoversi ed entrare in collisione con l'ambiente, ma invece di essere controllati dal motore di fisica, sei tu a dirigerne i movimenti. Vedrai come utilizzare le funzionalità uniche del nodo quando andremo a programmare le meccaniche di salto e di schiacciamento.

Vedi anche

Per saperne di più sui differenti tipi di nodi di fisica, vedi Introduzione alla fisica.

Per ora, andiamo a creare un rig base per il modello del nostro personaggio 3D. Successivamente, ciò ci consentirà di ruotare il modello tramite codice mentre riprodurrà un'animazione.

Aggiungi un nodo Node3D come figlio del nodo Player. Seleziona il nodo Player nell'albero di Scena clicca il pulsante "+" per aggiungere un nodo figlio. Rinominalo in Pivot.

../../_images/adding_node3D.webp

Successivamente, nel pannello del FileSystem, espandi la cartella art/ facendo doppio-clic, poi trascina e rilascia il player.glb su Pivot.

../../_images/instantiating_the_model.webp

Ciò dovrebbe istanziare il modello come figlio di Pivot. Puoi rinominarlo in Character.

../../_images/scene_structure.webp

Nota

I file .glb contengono dati di scene 3D basati sulla specificazione open source glTF 2.0. Sono una moderna e potente alternativa a formati proprietari come FBX, anch'esso supportato da Godot. Per creare questi file, abbiamo progettato il modello in Blender 3D e lo abbiamo esportato in glTF.

Come per tutti i tipi di nodi fisici, abbiamo bisogno di una forma di collisione affinché il nostro personaggio possa entrare in collisione con l'ambiente. Seleziona nuovamente il nodo Player e aggiungi un nodo CollisionShape3D figlio. Nell'Ispettore, sulla proprietà Shape, aggiungi un nuovo SphereShape3D.

../../_images/add_capsuleshape3d.webp

Il fildiferro della sfera appare sotto il personaggio.

../../_images/sphere_shape.png

Sarà la forma che il motore fisico utilizzerà per entrare in collisione con l'ambiente, quindi vogliamo che si adatti meglio al modello 3D. Ingrandiscila un po' trascinando il punto arancione nella viewport. La mia sfera ha un raggio di circa 0.8 metri.

Quindi, sposta in alto la forma di collisione in modo che la sua base si allinei più o meno con il piano della griglia.

../../_images/moving_the_sphere_up.png

Per facilitare lo spostamento della forma, è possibile cambiare la visibilità del modello cliccando sull'icona a forma di occhio accanto ai nodi Character o Pivot.

../../_images/toggling_visibility.webp

Salva la scena con il nome player.tscn.

Con i nodi pronti, possiamo quasi iniziare a programmare. Ma prima, dobbiamo definire delle azioni di input.

Creazione di azioni di input

Per muovere il personaggio, ascolteremo l'input del giocatore, come la pressione dei tasti freccia. In Godot, purché sia possibile scrivere tutte le associazioni dei tasti in codice, è disponibile un potente sistema che permette di assegnare un'etichetta a un insieme di tasti e pulsanti. Questo semplifica i nostri script e li rende più leggibili.

Questo sistema è la Mappa di input. Per accedere al suo editor, vai al menu Progetto e seleziona Impostazioni del progetto....

../../_images/project_settings.webp

In alto sono presenti diverse schede. Clicca su Mappa di input. Questa finestra ti consente di aggiungere nuove azioni nella parte superiore; queste saranno le tue etichette. Nella parte inferiore, puoi associare dei tasti a queste azioni.

../../_images/input_map_tab.webp

I progetti in Godot includono alcune azioni predefinite pensate per la progettazione delle interfaccie utente (vedi lo screenshot sopra). Queste saranno visibili se si abilita l'opzione Mostra azioni integrate. Potremmo usarle qui, ma invece ne definiamo di nostre per supportare i gamepad. Lascia Mostra azioni integrate disabilitata.

Chiameremo le nostre azioni move_left, move_right, move_forward, move_back e jump.

Per aggiungere un'azione, scrivi il suo nome nella barra in alto e premi Invio oppure clicca sul pulsante Aggiungi.

../../_images/adding_action.webp

Crea le seguenti cinque azioni:

../../_images/actions_list_empty.webp

Per associare un tasto o un pulsante a una azione, clicca sul pulsante "+" alla sua destra. Fai così per move_left. Premi il tasto freccia sinistra e clicca su OK.

../../_images/left_inputmap.webp

Associa anche il tasto A all'azione move_left.

../../_images/keyboard_keys.webp

Aggiungiamo ora il supporto per lo stick analogico sinistro del gamepad. Clicca di nuovo sul pulsante "+", ma questa volta seleziona manualmente l'input all'interno dell'albero degli input. Seleziona l'asse X negativo dello stick analogico sinistro sotto Assi del joypad.

../../_images/joystick_axis_input.webp

Lascia gli altri valori così come sono e premi OK.

Nota

Se desideri che i controller abbiano azioni di input diverse, devi utilizzare l'opzione Dispositivi nelle Opzioni aggiuntive. Il Dispositivo 0 corrisponde al primo gamepad collegato, il Dispositivo 1 al secondo gamepad collegato e così via.

Fai lo stesso per le altre azioni di input. Ad esempio, associa la freccia destra, il tasto D e l'asse positivo del joystick sinistro a move_right. Dopo aver associato tutti i tasti, l'interfaccia dovrebbe assomigliare a così.

../../_images/move_inputs_mapped.webp

L'ultima azione da configurare è l'azione jump. Associa il tasto Spazio e il pulsante A del gamepad, che si trovano nella sezione Pulsanti del joystick.

../../_images/joy_button_option.webp

La tua azione di salto dovrebbe essere simile a questa.

../../_images/jump_input_action.webp

Queste sono tutte le azioni necessarie per questo gioco. Puoi utilizzare questo menu per etichettare qualsiasi gruppo di tasti e pulsanti nei tuoi progetti.

Nella prossima parte, programmeremo e testeremo il movimento del giocatore.