You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Una guida introduttiva a Godot per chi conosce Scratch
1
+
# Scopriamo Godot!
2
+
3
+
Questo repository contiene i sorgenti della guida "Scopriamo Godot"
4
+
5
+
6
+
## Licenza
7
+
8
+
Il materiale è distribuito sotto licenza Creative Commons Attribution 3.0 Unported license ([CC BY 3.0](https://creativecommons.org/licenses/by/3.0/)) . Lo script pygment gdscript.py proviene dal ([repository originale di Godot Docs] (https://github.com/godotengine/godot-docs/) by "Juan Linietsky, Ariel Manzur and the Godot community"
Questa sezione spiega come fare delle cose specifiche in Godot.
8
+
9
+
10
+
Fare qualcosa se un tasto è premuto
11
+
================================================
12
+
13
+
Per fare qualcosa quando si preme un tasto, bisogna innanzitutto configurare un'azione nel menu ``Progetto->Impostazioni Progetto->Mappa Input``:
14
+
15
+
.. figure:: img/Mappa_Input.png
16
+
:alt:Mappa Input
17
+
18
+
Si scrive il nome dell'azione e si preme su ``Aggiungi``:
19
+
20
+
.. figure:: img/aggiungi_azione.png
21
+
:alt:Aggiungi Azione
22
+
23
+
Poi si specifica il tasto:
24
+
25
+
.. figure:: img/aggiungi_tasto.png
26
+
:alt:Aggiungi Tasto
27
+
28
+
.. figure:: img/premi_tasto.png
29
+
:alt:Premi un Tasto
30
+
31
+
Infine, si può usare l'azione nel codice: ::
32
+
33
+
var colpisci = Input.is_action_pressed('colpisci')
34
+
if colpisci:
35
+
# fai qualcosa
36
+
37
+
.. IMPORTANT:: ci sono due funzioni simili: ``Input.is_action_pressed`` e ``Input.is_action_just_pressed``. La prima
38
+
serve per controllare se il tasto è premuto. La seconda per controllare se è stato **appena** premuto. La prima funzione va
39
+
bene ad esempio per i tasti freccia, perchè finchè il tasto è premuto, il personaggio si sposta. La seconda va bene per quando
40
+
si attacca: ogni volta che viene premuto il tasto, il personaggio attacca
41
+
42
+
43
+
Animazioni!
44
+
================================================
45
+
46
+
In Godot per fare le animazioni si usano i Nodi di tipo `AnimatedSprite`.
47
+
48
+
Ad esempio per il gioco del Cavaliere Miaogico, usiamo il nodo `Animazioni`:
49
+
50
+
.. figure:: img/animazione/nodo_animazione.png
51
+
:alt:Il nodo `Animazioni`
52
+
53
+
Cliccando sul nodo, possiamo vedere che una delle sue proprietà si chiama `Frames`. I `Frames` sono un pò come i costumi di Scratch, ma possono essere raggruppati in animazioni diverse. Cliccando sulla parte bassa della finestra di Godot, sulla parola `SpriteFrames`, vengono visualizzate tutte le animazioni presenti.
54
+
Ad esempio per il gioco del Cavaliere Miaogico, ci sono animazioni diverse per l'attacco e la camminata; ognuna ha i suoi costumi:
55
+
56
+
.. figure:: img/animazione/frames.png
57
+
:alt:Il frames
58
+
59
+
Per far partire un'animazione usiamo le funzioni `play()` e `stop()`. Ad esempio, nello script del Personaggio: ::
60
+
61
+
$Animazioni.play("camminata")
62
+
$Animazioni.set_flip_h(true)
63
+
64
+
.. NOTE:: la funzione `set_flip_h(true)` serve per riflettere orizzontalmente l'animazione. Serve per poter usare la stessa animazione sia quando il Personaggio è rivolto verso destra che verso sinistra.
65
+
66
+
Aggiungere una "Camera"
67
+
================================================
68
+
69
+
La ``Camera`` serve per inquadrare sempre il personaggio anche se il livello è più grande dello schermo
70
+
71
+
Per prima cosa bisogna aggiungere un nodo ``Camera2d`` al personaggio:
72
+
73
+
.. figure:: img/camera/camera.png
74
+
:alt:Nodo Camera2d
75
+
76
+
Poi si configurano le opzioni. ``Current`` va impostato a ``On`` se si vuole che la ``Camera`` sia attiva. I ``Limiti`` servono per fare in modo che la ``Camera`` non inquadri mai oltre il bordo del livello. In questo esempio sono impostati a mano:
77
+
78
+
.. figure:: img/camera/camera_opzioni.png
79
+
:alt:Opzioni Camera
80
+
81
+
82
+
Disegnare il livello
83
+
================================================
84
+
85
+
Per disegnare il livello bisogna agire sul nodo `TileMap`(letteralmente vuol dire "mappa di piastrelle"):
86
+
87
+
.. figure:: img/tilemap/nodo.png
88
+
:alt:Nodo TileMap
89
+
90
+
Selezionando il nodo `TileMap` appaiono tante piastrelle diverse utilizzabili
91
+
92
+
.. NOTE:: le piastrelle le abbiamo preparate noi. Per prepararle bisogna fare un pò di passaggi, che spiegheremo in un altro "come si fa".
93
+
94
+
.. figure:: img/tilemap/seleziona-tile.png
95
+
:alt:Seleziona Piastrella
96
+
97
+
Dopo aver selezionato una piastrella:
98
+
99
+
- con il tastro sinistro si aggiunge la piastrella al livello
100
+
- con il tasto destro si cancella
101
+
102
+
il tasto sinistro / destro si possono anche tenere premuti, per essere più veloci.
103
+
104
+
105
+
Usare i "segnali"
106
+
================================================
107
+
108
+
In Godot alcuni nodi hanno la possibilità di mandare dei "segnali", che sono un pò come i messaggi di Scratch.
109
+
In Godot però i messaggi non vengono inviati a tutti gli altri nodi. Bisogna collegarli. Per farlo, bisogna andare nella sezione "Nodo" del nodo. Ad esempio per il gioco del Cavaliere Miaogico, usiamo il nodo `Slash`
110
+
111
+
.. figure:: img/slash/seleziona_nodo.png
112
+
:alt:Il nodo `Slash`
113
+
114
+
Scegliamo il segnale che ci interessa: `body_entered`, che vuol dire che un altro oggetto (in questo caso un nemico) è "entrato" nello slash (o viceversa):
115
+
116
+
.. figure:: img/slash/segnale.png
117
+
:alt:Il segnale `body_entered`
118
+
119
+
E lo colleghiamo a una funzione. Godot è così gentile da creare per noi una funzione con un nome appropriato:
120
+
121
+
.. figure:: img/slash/metodo.png
122
+
:alt:La scelta della funzione.
123
+
124
+
Infine possiamo fare qualcosa nella funzione, ad esempio: ::
0 commit comments