﻿1
00:00:04,330 --> 00:00:05,170
‫Ciao e Benvenuto.

2
00:00:05,170 --> 00:00:12,100
‫In questa lezione cercheremo di avere una scelta nei nostri alberi comportamentali in modo tale che io possa

3
00:00:12,100 --> 00:00:20,200
‫far correre un nemico verso di me e se mi perde di vista, viene nella mia ultima posizione nota facendo fondamentalmente

4
00:00:20,590 --> 00:00:24,190
‫due comportamenti un inseguimento e poi Indago sul comportamento.

5
00:00:24,190 --> 00:00:26,050
‫Immergiamoci e vediamo come è realizzabile.

6
00:00:26,050 --> 00:00:27,130
‫Utilizzo degli alberi comportamentali.

7
00:00:28,530 --> 00:00:34,530
‫Quindi, sebbene questo comportamento di pattugliamento sia molto istruttivo, non è proprio il tipo di comportamento che

8
00:00:34,530 --> 00:00:35,280
‫vogliamo implementare.

9
00:00:35,790 --> 00:00:39,150
‫Quello che preferiremmo avere è qualcosa della seguente linea.

10
00:00:39,330 --> 00:00:44,580
‫Quando riusciamo a vedere il giocatore, ci avviciniamo il più possibile a lui.

11
00:00:45,330 --> 00:00:51,840
‫E quando il giocatore scompare, proviamo a spostarci nell'ultima posizione nota del giocatore per

12
00:00:51,840 --> 00:00:52,500
‫trovarlo.

13
00:00:52,800 --> 00:00:58,410
‫E una volta esaurita questa opzione, forse torniamo in un luogo diverso, o forse

14
00:00:58,410 --> 00:01:00,150
‫restiamo lì per ora.

15
00:01:00,930 --> 00:01:02,400
‫Quindi come possiamo raggiungere questo obiettivo?

16
00:01:02,430 --> 00:01:05,880
‫Bene, al momento, non abbiamo modo di raggiungere questo obiettivo con una sequenza di azioni.

17
00:01:05,880 --> 00:01:09,200
‫Dobbiamo fare una scelta in base ai dati che abbiamo a disposizione.

18
00:01:09,210 --> 00:01:15,210
‫Dobbiamo scegliere se possiamo vedere il giocatore o se non possiamo, se abbiamo o meno l'ultima

19
00:01:15,210 --> 00:01:18,450
‫posizione conosciuta del giocatore, quel genere di cose.

20
00:01:18,870 --> 00:01:24,000
‫Quindi, per fare ciò, abbiamo bisogno di un nuovo tipo di nodo nell'albero del comportamento chiamato nota del selettore.

21
00:01:24,060 --> 00:01:29,070
‫Quindi, se facciamo clic con il pulsante destro del mouse e osserviamo i nostri compositi, una delle opzioni è il selettore.

22
00:01:29,550 --> 00:01:33,090
‫Ora il selettore invece della sequenza funziona così.

23
00:01:33,480 --> 00:01:40,410
‫Se hai un sacco di attività sotto il selettore, verrà eseguito fino a quando la prima non avrà esito positivo.

24
00:01:40,830 --> 00:01:45,150
‫E fondamentalmente si aspetta che tutti falliscano finché uno di loro non ci riesce.

25
00:01:45,780 --> 00:01:48,140
‫Ora la sequenza ha fatto il contrario.

26
00:01:48,150 --> 00:01:50,220
‫Li esegue tutti finché uno di essi non si guasta.

27
00:01:50,730 --> 00:01:52,750
‫Allora perché è utile?

28
00:01:52,800 --> 00:01:56,610
‫Perché è utile che il selettore ne esegua uno finché uno di essi non riesce?

29
00:01:56,610 --> 00:02:00,900
‫Perché fondamentalmente vogliamo che scelga la prima opzione praticabile.

30
00:02:01,920 --> 00:02:06,780
‫Ora, il modo in cui lo faremo non è eseguire effettivamente attività sotto il selettore,

31
00:02:06,780 --> 00:02:08,910
‫ma eseguire sequenze sotto il selettore.

32
00:02:08,910 --> 00:02:12,120
‫Quindi, a livello di radice, faremo una nota di selezione.

33
00:02:12,690 --> 00:02:16,920
‫E poi, al di sotto, spostiamo questa sequenza da parte e creiamo altre sequenze.

34
00:02:17,250 --> 00:02:19,930
‫Avremo una sequenza qui.

35
00:02:20,670 --> 00:02:26,640
‫E quello che possiamo fare è rinominare la sequenza da sequenza a qualcosa come Chase.

36
00:02:27,330 --> 00:02:35,010
‫E poi possiamo aggiungere un'altra sequenza qui, che sarà lungo le linee di indagine.

37
00:02:36,050 --> 00:02:41,330
‫E questi sono fondamentalmente i nostri due comportamenti tra i quali vogliamo poter scegliere.

38
00:02:42,260 --> 00:02:48,980
‫E per farli fallire, possiamo aggiungere cose ai nodi chiamati decoratori.

39
00:02:49,370 --> 00:02:54,890
‫Quindi, se fai clic con il pulsante destro del mouse su un nodo e vai su Aggiungi decoratore, puoi vedere qui ci sono un sacco di opzioni qui.

40
00:02:55,460 --> 00:02:59,330
‫E sostanzialmente cambiano il modo in cui funziona questo nodo.

41
00:02:59,450 --> 00:03:00,890
‫Quindi possono farlo in diversi modi.

42
00:03:00,920 --> 00:03:05,810
‫Ad esempio, abbiamo questo ciclo condizionale che ti consente di ripetere tutte le azioni nella sequenza

43
00:03:05,810 --> 00:03:08,720
‫tutte le volte che questo condizionale è corretto.

44
00:03:09,200 --> 00:03:15,800
‫Abbiamo altre cose qui, come un controllo del codice, che riguarda la visibilità e altre cose così belle.

45
00:03:15,800 --> 00:03:17,660
‫Abbiamo solo un ciclo puro.

46
00:03:18,090 --> 00:03:19,350
‫Abbiamo un limite di tempo.

47
00:03:19,370 --> 00:03:23,240
‫Quindi questo è solo un possibile che possiamo rimanere all'interno di questa sequenza solo per un certo periodo di tempo.

48
00:03:23,540 --> 00:03:27,020
‫Fondamentalmente molte cose che modificano il comportamento di questa sequenza.

49
00:03:27,290 --> 00:03:33,290
‫Ma quella che ci interessa è la lavagna, perché questa è una condizione di lavagna.

50
00:03:33,290 --> 00:03:38,360
‫E come puoi vedere dalla scritta sottostante, l'impostazione predefinita è qualcosa sulla falsariga di questo atto

51
00:03:38,360 --> 00:03:39,710
‫personale è impostato?

52
00:03:40,250 --> 00:03:46,940
‫E se questo non è impostato, automaticamente questo nodo e tutto ciò che si trova al di sotto falliranno, il che

53
00:03:46,940 --> 00:03:50,810
‫significa che il nostro selettore passerà all'opzione due, che è investigare.

54
00:03:51,290 --> 00:03:53,800
‫Quindi, in questo caso, vogliamo davvero cambiarlo.

55
00:03:53,810 --> 00:03:55,160
‫Vogliamo cambiare il modo in cui funziona.

56
00:03:55,160 --> 00:04:02,120
‫Quindi, la posizione del nostro giocatore, vogliamo che sia tale da essere impostata solo quando il giocatore è visibile.

57
00:04:02,510 --> 00:04:09,980
‫E poi vogliamo aggiungere di nuovo una nuova variabile qui, un vettore che sarà l'ultima posizione conosciuta del giocatore

58
00:04:10,400 --> 00:04:16,010
‫e l'ultima posizione conosciuta del giocatore quando il giocatore sarà visibile sarà la stessa.

59
00:04:16,490 --> 00:04:20,660
‫Ma una volta che il giocatore diventa invisibile, la posizione del giocatore viene annullata.

60
00:04:21,080 --> 00:04:23,840
‫E l'ultima posizione conosciuta del giocatore è dove vorremmo andare.

61
00:04:24,620 --> 00:04:30,230
‫Quindi possiamo farlo andando alla nostra condizione di base della lavagna e semplicemente modificandola in modo che la

62
00:04:30,230 --> 00:04:31,850
‫query sia impostata su Sì.

63
00:04:32,300 --> 00:04:35,300
‫Ma la cosa che vogliamo essere è la posizione del giocatore.

64
00:04:35,300 --> 00:04:41,900
‫Quindi, se la posizione di gioco è impostata, daremo la caccia e daremo Chase facendo

65
00:04:41,900 --> 00:04:47,960
‫fondamentalmente solo una mossa e ci sposteremo nella posizione del giocatore come.

66
00:04:47,960 --> 00:04:51,730
‫Quindi ora non stiamo facendo molto altro nella sequenza.

67
00:04:51,740 --> 00:04:57,240
‫Quindi, in realtà, potresti mettere in movimento anche questa condizione di lavagna.

68
00:04:57,680 --> 00:05:01,700
‫Ma poiché potremmo voler fare altre cose come le riprese, la lascerò come sequenza per

69
00:05:01,700 --> 00:05:02,150
‫ora.

70
00:05:02,660 --> 00:05:04,010
‫Allora abbiamo questa indagine.

71
00:05:04,010 --> 00:05:10,430
‫Fondamentalmente anche Investigate farà una mossa, ma invece di spostarsi nella posizione

72
00:05:10,460 --> 00:05:15,980
‫del giocatore, si sposterà nell'ultima posizione conosciuta del giocatore.

73
00:05:16,580 --> 00:05:22,730
‫E puoi vedere che non abbiamo una condizione su questo perché questo cade se questa condizione fallisce.

74
00:05:23,420 --> 00:05:29,210
‫Una cosa importante da notare su queste condizioni di lavagna è che per impostazione predefinita, una volta

75
00:05:29,210 --> 00:05:33,890
‫presa la decisione di avviare l'esecuzione di questo nodo, non lo valuteremo nuovamente.

76
00:05:34,160 --> 00:05:39,770
‫Quindi, se per qualche motivo perdiamo di vista il giocatore mentre ci spostiamo nella posizione di quel giocatore,

77
00:05:39,770 --> 00:05:41,570
‫continueremo a cercare di arrivarci.

78
00:05:42,080 --> 00:05:49,580
‫Quindi, se volessimo essere in grado di interrompere l'esecuzione di questa nota, allora c'è un'opzione per quello.

79
00:05:49,580 --> 00:05:53,720
‫Se vai al controllo del flusso, ci sono gli osservatori di notifica e c'è sotto di esso.

80
00:05:53,720 --> 00:05:56,030
‫Observer interrompe al momento impostato su nessuno.

81
00:05:56,600 --> 00:05:58,490
‫Ma puoi scegliere tra un paio di opzioni.

82
00:05:59,180 --> 00:06:00,590
‫Puoi impostarlo su auto.

83
00:06:00,860 --> 00:06:07,790
‫Quindi questo sta dicendo se questa condizione diventa improvvisamente falsa, allora smetti di fare qualsiasi cosa tu stia facendo e rivaluta

84
00:06:07,790 --> 00:06:09,710
‫il tuo selettore e vedi.

85
00:06:09,740 --> 00:06:12,050
‫Forse ora dobbiamo fare la nota investigativa.

86
00:06:12,650 --> 00:06:18,470
‫L'altra opzione qui ha una priorità più bassa e puoi vedere che è cambiato ciò che è evidenziato qui.

87
00:06:18,470 --> 00:06:24,380
‫Sta dicendo che se improvvisamente questa condizione di lavagna diventasse vera, interrompi qualsiasi altra cosa stavamo facendo e

88
00:06:24,380 --> 00:06:26,790
‫inizia a eseguire questa condizione di inseguimento.

89
00:06:27,380 --> 00:06:29,630
‫E poi l'ultima opzione è entrambe.

90
00:06:29,900 --> 00:06:31,050
‫E questo è quello che vogliamo.

91
00:06:31,070 --> 00:06:37,160
‫Fondamentalmente, sta dicendo che questa condizione basata sulla lavagna, se diventa vera, iniziamo immediatamente a

92
00:06:37,160 --> 00:06:38,480
‫eseguire la sequenza.

93
00:06:38,690 --> 00:06:44,100
‫Se diventa falso, smettiamo di eseguirlo immediatamente o interrompiamo l'esecuzione di qualsiasi altra cosa stava succedendo.

94
00:06:44,120 --> 00:06:51,350
‫Fondamentalmente vogliamo solo andare sempre e fare qualunque percorso sia dettato da questa condizione di lavagna.

95
00:06:51,350 --> 00:06:56,690
‫Quindi si spera che abbia senso che i rapporti dell'osservatore fermino le cose in azione, altrimenti

96
00:06:56,690 --> 00:06:59,720
‫aspetterà fino al termine dell'azione prima di rivalutare.

97
00:07:00,470 --> 00:07:07,370
‫Quindi, davvero, ora vogliamo andare avanti e implementare la nostra ultima posizione nota e la posizione di riproduzione perché al momento, se

98
00:07:07,640 --> 00:07:13,520
‫andiamo al nostro C++ e ci diamo un po' più di spazio, allora puoi vedere che stiamo solo impostando

99
00:07:13,520 --> 00:07:16,220
‫questo posizione di riproduzione in Inizia la riproduzione.

100
00:07:16,340 --> 00:07:21,380
‫Idealmente, lo faremmo ogni volta che abbiamo la linea di vista del nostro pool di giocatori, e quindi possiamo effettivamente decommentare

101
00:07:21,380 --> 00:07:23,540
‫il nostro codice di linea di vista qui.

102
00:07:24,110 --> 00:07:27,320
‫E probabilmente vogliamo decommentare anche il codice else.

103
00:07:27,560 --> 00:07:32,300
‫Ma in questo caso non schiariremo la messa a fuoco e fermeremo il movimento direttamente.

104
00:07:32,300 --> 00:07:35,570
‫Posso andare avanti e rimuoverli completamente perché.

105
00:07:35,610 --> 00:07:37,590
‫Non è così che stiamo facendo le cose in questo momento.

106
00:07:38,130 --> 00:07:47,130
‫Invece, quello che vogliamo fare, se rimuovo il codice, è che vogliamo essere qui a impostare la posizione del

107
00:07:47,130 --> 00:07:47,940
‫giocatore.

108
00:07:48,300 --> 00:07:53,500
‫Vogliamo anche impostare l'ultima posizione conosciuta lì.

109
00:07:54,000 --> 00:07:59,520
‫E nel resto vogliamo cancellare la posizione del giocatore.

110
00:08:00,270 --> 00:08:07,800
‫Ora, per fare ciò, abbiamo una funzione a nostra disposizione, che è invece del valore impostato come

111
00:08:07,800 --> 00:08:15,210
‫vettore, se andiamo avanti e apriamo il nostro componente lavagna punto h, c'è un valore chiaro.

112
00:08:15,630 --> 00:08:21,150
‫E questo prende solo il nome f non ha bisogno di prendere un tipo o altro o perché stiamo

113
00:08:21,150 --> 00:08:23,850
‫semplicemente cancellando completamente qualsiasi cosa fosse in quella variabile.

114
00:08:24,570 --> 00:08:27,360
‫Quindi qui ho una sfida per te per compilare il nostro segno di spunta.

115
00:08:27,780 --> 00:08:30,420
‫Imposta le due variabili quando è in linea di vista.

116
00:08:30,450 --> 00:08:39,240
‫Fondamentalmente compila questo primo bit dell'istruzione F e poi cancella la posizione del giocatore quando abbiamo l'altro.

117
00:08:39,240 --> 00:08:41,940
‫Quindi, quando perdiamo la visuale, non abbiamo più un luogo di gioco.

118
00:08:42,360 --> 00:08:48,300
‫Riduci la velocità del nemico che si trova nel mondo in modo da poterlo allontanare più facilmente.

119
00:08:48,630 --> 00:08:54,720
‫E poi controlla la funzionalità, controlla che sei in grado di nasconderti dietro un angolo e che vada nell'ultima

120
00:08:54,720 --> 00:08:56,920
‫posizione nota per cercare di trovarti.

121
00:08:57,330 --> 00:08:59,190
‫Metti in pausa il video e prova a farlo.

122
00:09:00,460 --> 00:09:00,780
‫Bene.

123
00:09:00,790 --> 00:09:01,370
‫Ben tornato.

124
00:09:01,390 --> 00:09:02,500
‫Quindi proviamoci.

125
00:09:02,530 --> 00:09:04,210
‫Prima di tutto, stiamo impostando la posizione di riproduzione.

126
00:09:04,210 --> 00:09:06,970
‫Lo sposterò fuori dall'inizio del gioco e lo sposterò invece qui.

127
00:09:07,480 --> 00:09:12,670
‫Quindi, impostando la posizione del giocatore su, dobbiamo portare il giocatore qui e riprenderlo.

128
00:09:13,000 --> 00:09:14,320
‫Quindi decommenterò quella riga.

129
00:09:14,800 --> 00:09:21,100
‫E poi stiamo facendo esattamente la stessa cosa, esattamente la stessa riga di codice per la nostra ultima posizione conosciuta del

130
00:09:21,100 --> 00:09:21,930
‫giocatore qui.

131
00:09:21,940 --> 00:09:28,030
‫Quindi andiamo alla nostra lavagna e assicuriamoci di copiarla in modo da ottenere esattamente lo stesso nome e quindi

132
00:09:28,030 --> 00:09:33,100
‫vogliamo solo chiarire che l'ultima cosa è cancellare la posizione del nostro giocatore qui.

133
00:09:33,100 --> 00:09:39,550
‫Quindi sarà un valore chiaro e prenderà questa posizione del lettore di testo come il valore che

134
00:09:39,550 --> 00:09:41,740
‫cercheremo di cancellare alla fine.

135
00:09:42,400 --> 00:09:46,600
‫E possiamo andare avanti e compilare e vedere se funziona.

136
00:09:48,700 --> 00:09:50,500
‫Mentre la compilazione ha avuto successo.

137
00:09:50,500 --> 00:09:56,500
‫L'altra cosa che ho detto di fare per semplificare il debug è stata di selezionare il

138
00:09:56,500 --> 00:10:04,300
‫nemico e possiamo cambiare la loro velocità scendendo alle loro componenti di movimento e trovando la camminata e trovando la loro velocità.

139
00:10:04,310 --> 00:10:07,060
‫Quindi la velocità massima di camminata è 600 qui.

140
00:10:07,390 --> 00:10:11,440
‫Riduciamolo a 400 così possiamo facilmente allontanarci da loro.

141
00:10:11,440 --> 00:10:15,140
‫Cammineranno un po' lentamente e andranno avanti e giocheranno.

142
00:10:15,160 --> 00:10:16,660
‫Stanno camminando verso un lento.

143
00:10:16,660 --> 00:10:17,740
‫Possiamo scappare.

144
00:10:18,130 --> 00:10:20,230
‫Ci nascondiamo dietro un angolo ed eccoli qui.

145
00:10:20,230 --> 00:10:22,570
‫Vieni a cercarci ogni volta.

146
00:10:22,960 --> 00:10:27,820
‫Ma si spera che se ci nascondiamo dietro due angoli, non saranno in grado di trovarci.

147
00:10:28,240 --> 00:10:30,880
‫Quindi mi nascondo lì, mi nascondo qui, mi nascondo qui.

148
00:10:31,330 --> 00:10:35,320
‫E andrà a indagare nell'ultimo luogo conosciuto, vedete, ha appena fatto capolino

149
00:10:35,320 --> 00:10:39,490
‫da dietro l'angolo, ma poi è bloccato lì perché non sa cosa fare.

150
00:10:39,940 --> 00:10:46,870
‫E se dovessimo dare un'occhiata al nostro albero del comportamento e mettere questo da una parte e il gioco

151
00:10:46,870 --> 00:10:49,870
‫dall'altra e darmi un po' di spazio.

152
00:10:50,350 --> 00:10:54,850
‫Quindi, se diamo un'occhiata all'albero del comportamento, possiamo vedere che è una specie di jazz da queste parti perché

153
00:10:54,850 --> 00:10:56,560
‫non può fare nessuno dei due.

154
00:10:56,560 --> 00:11:00,220
‫Sta cercando di spostarsi nell'ultima posizione nota che sta riuscendo.

155
00:11:00,460 --> 00:11:01,720
‫Quindi sta diventando un po' bloccato qui.

156
00:11:02,020 --> 00:11:05,710
‫Ma se vengo in vista, puoi vedere che si sta muovendo verso di me.

157
00:11:06,070 --> 00:11:11,530
‫Se mi perde di vista, passa alla condizione investigativa.

158
00:11:11,920 --> 00:11:12,730
‫Quindi perdi di vista.

159
00:11:12,730 --> 00:11:13,840
‫Indagherà.

160
00:11:14,230 --> 00:11:17,890
‫E poi viene e mi vede e poi torna a darmi la caccia.

161
00:11:18,250 --> 00:11:20,740
‫Quindi questo comportamento sta effettivamente funzionando.

162
00:11:20,740 --> 00:11:29,140
‫Ora possiamo scegliere tra cercare di inseguire e cercare di indagare sulla base di questo comportamento da

163
00:11:29,140 --> 00:11:29,650
‫lavagna.

164
00:11:29,650 --> 00:11:37,060
‫Cambiamo semplicemente il nome di questa lavagna in behavior qui per vedere la riproduzione di un punto interrogativo.

165
00:11:37,300 --> 00:11:38,860
‫Quindi sarà molto più facile da leggere.

166
00:11:38,860 --> 00:11:43,960
‫Ora abbiamo questo selettore che può vedere il gioco, quindi dovremmo inseguirlo, altrimenti dovremmo

167
00:11:43,960 --> 00:11:48,820
‫indagare e possiamo eliminare questa sequenza qui perché non è più in uso.

168
00:11:49,300 --> 00:11:54,700
‫Quindi si spera che ora tu abbia una migliore comprensione di come gli alberi del comportamento

169
00:11:54,700 --> 00:12:01,390
‫possono essere collegati tra loro per creare scelte e sequenze e mettere insieme molte attività per creare comportamenti più complessi davvero facilmente.

170
00:12:01,780 --> 00:12:07,990
‫Nella prossima lezione, esamineremo come possiamo creare le nostre attività personalizzate in C++ in modo da

171
00:12:07,990 --> 00:12:10,330
‫poter ottenere alcune azioni di ripresa.

172
00:12:10,450 --> 00:12:11,740
‫Ci vediamo nel prossimo video.

