﻿1
00:00:04,580 --> 00:00:05,390
‫Ciao e Benvenuto.

2
00:00:05,390 --> 00:00:10,730
‫In questa lezione, collegheremo il nostro sistema sanitario al progetto di animazione in modo che io possa

3
00:00:10,730 --> 00:00:13,700
‫sparare a questo personaggio fino alla sua morte.

4
00:00:13,700 --> 00:00:15,380
‫Immergiamoci e vediamo come funziona.

5
00:00:16,580 --> 00:00:22,580
‫Quindi vuoi che questo booleano nei progetti di animazione venga impostato automaticamente dal gioco.

6
00:00:23,180 --> 00:00:29,270
‫E se passiamo al grafico degli eventi e diamo un'occhiata a come funziona attualmente, altre proprietà come

7
00:00:29,270 --> 00:00:34,370
‫questa, come ottenere velocità, attivarsi, trasformare, andremo al pedone e stiamo facendo una funzione

8
00:00:34,370 --> 00:00:38,270
‫get su di esso ogni volta che vogliamo aggiornare l'animazione.

9
00:00:38,810 --> 00:00:43,910
‫Quindi vogliamo in qualche modo seguire questo modello in cui andremo a vedere se il nostro giocatore è

10
00:00:43,910 --> 00:00:45,020
‫morto o meno.

11
00:00:45,320 --> 00:00:52,130
‫In tal modo abbiamo bisogno di esporre alcune funzionalità, alcune funzioni richiamabili dal nostro C++.

12
00:00:52,670 --> 00:00:57,050
‫Quindi andiamo al C++ e diamo un'occhiata a cosa c'è.

13
00:00:57,230 --> 00:01:02,300
‫Quindi abbiamo potuto creare una funzione pubblica, ma ciò non la rende necessariamente accessibile.

14
00:01:03,140 --> 00:01:09,740
‫Per fare l'accessibilità, abbiamo bisogno di una nuova funzione che lo renda visibile ai progetti e al sistema di strumenti di

15
00:01:09,740 --> 00:01:10,850
‫intestazione sui binari.

16
00:01:11,120 --> 00:01:15,050
‫Ma dobbiamo fare un passo in più rispetto ad averlo come una nuova funzione.

17
00:01:15,050 --> 00:01:20,090
‫Quindi iniziamo con la funzione macro, ma vogliamo renderla richiamabile blueprint.

18
00:01:20,090 --> 00:01:22,910
‫Quindi questa è l'opzione che possiamo usare blueprint callable.

19
00:01:24,140 --> 00:01:29,660
‫Tuttavia, c'è un'altra opzione che sovrascrive blueprint callable piuttosto implica che sia blueprint

20
00:01:29,660 --> 00:01:32,420
‫callable e che sia blueprint puro.

21
00:01:32,450 --> 00:01:36,620
‫Ora vedremo la differenza tra blueprint pure e Blueprint richiamabile in appena un secondo.

22
00:01:36,920 --> 00:01:43,400
‫Ma sappi solo che se usi blueprint puro, sta facendo lo stesso di Blueprint Callable e poi alcuni.

23
00:01:43,400 --> 00:01:45,410
‫Quindi sta facendo un po' più di un progetto richiamabile.

24
00:01:46,100 --> 00:01:50,600
‫E poi quello che vogliamo è una funzione che restituisce Boolean che dice se questo personaggio è morto

25
00:01:50,600 --> 00:01:51,110
‫o meno.

26
00:01:52,230 --> 00:01:54,240
‫Ci sarà utile saperlo.

27
00:01:54,540 --> 00:01:58,500
‫E poi, infine, vogliamo che questa sia una funzione di membro del concerto.

28
00:01:58,860 --> 00:02:00,740
‫Ora, perché vuole essere un concerto?

29
00:02:00,750 --> 00:02:08,010
‫Perché quando chiamiamo questa funzione, non ci aspettiamo che modifichi nessuno degli stati di ask you to character, quindi possiamo

30
00:02:08,010 --> 00:02:11,790
‫tranquillamente dire che questa dovrebbe essere una funzione concerto.

31
00:02:12,270 --> 00:02:19,770
‫E in effetti, concerto e blueprint pure spesso vanno insieme perché blueprint pure significa che se andiamo oltre

32
00:02:19,770 --> 00:02:24,120
‫a qualsiasi progetto, possiamo dare un'occhiata ad alcune note pure.

33
00:02:24,390 --> 00:02:26,070
‫Questo qui ottiene la trasformazione attiva.

34
00:02:26,070 --> 00:02:27,000
‫Questa è una nota pura.

35
00:02:27,000 --> 00:02:30,690
‫Ottieni velocità è una nota pura. La velocità impostata non è una nota pura.

36
00:02:30,690 --> 00:02:33,240
‫Riesci a vedere cosa potrebbe collegarli insieme?

37
00:02:33,240 --> 00:02:37,170
‫Che dire di questi rende questo non puro e questo puro?

38
00:02:37,530 --> 00:02:43,440
‫Bene, in generale, è il fatto che questa penna di esecuzione, un nodo puro, non ha un

39
00:02:43,440 --> 00:02:44,700
‫pin di esecuzione.

40
00:02:45,090 --> 00:02:51,300
‫E di solito è sicuro dire che qualcosa non ha un pin di esecuzione quando non ha alcun impatto sulla

41
00:02:51,300 --> 00:02:53,910
‫cosa che sta chiamando solo sul suo risultato.

42
00:02:54,240 --> 00:03:00,270
‫In sostanza, questo significa che non importa quante volte chiamiamo questa funzione, produrrà sempre

43
00:03:00,270 --> 00:03:01,590
‫lo stesso risultato.

44
00:03:01,590 --> 00:03:04,950
‫Avrà sempre lo stesso effetto sul programma.

45
00:03:05,280 --> 00:03:06,690
‫È una pura funzione.

46
00:03:06,690 --> 00:03:09,000
‫Non cambia nulla quando viene chiamato.

47
00:03:09,360 --> 00:03:14,760
‫Quindi è più o meno lo stesso di const, anche se è un po' più forte perché quello che sta

48
00:03:14,760 --> 00:03:20,190
‫dicendo non è solo che non cambia nulla qui sul personaggio delle riprese, ma non cambia nulla a livello globale,

49
00:03:20,190 --> 00:03:21,960
‫in nessuno stato, da nessuna parte.

50
00:03:21,960 --> 00:03:22,650
‫Punto.

51
00:03:22,950 --> 00:03:28,740
‫L'unico input, l'unico effetto che ha è negli output che produce.

52
00:03:29,700 --> 00:03:32,280
‫Ecco perché abbiamo scelto di rendere puro questo progetto.

53
00:03:32,280 --> 00:03:36,930
‫Elimina la necessità di un pin di esecuzione, il che lo rende molto più piacevole nei progetti.

54
00:03:37,290 --> 00:03:43,110
‫Ed esprime anche il fatto che non stiamo apportando modifiche allo stato del nostro gioco quando chiamiamo

55
00:03:43,110 --> 00:03:44,130
‫questa funzione.

56
00:03:44,640 --> 00:03:48,630
‫Quindi andiamo avanti e proviamo a creare un'implementazione per questo.

57
00:03:48,630 --> 00:03:54,120
‫In effetti, lascerò a te l'implementazione come una sfida, e andremo oltre e

58
00:03:54,120 --> 00:03:59,820
‫collegheremo questo in un grafico, scusa, un grafico di eventi del progetto di animazione.

59
00:04:00,300 --> 00:04:03,780
‫Quindi lo faremo con un nuovo set qui.

60
00:04:03,780 --> 00:04:12,660
‫Vogliamo impostare la variabile booleana è morto alla fine e vogliamo ottenere il proprietario del pedone e vogliamo lanciarlo perché

61
00:04:12,660 --> 00:04:18,630
‫deve essere uno sparare a un personaggio per avere questa proprietà morta.

62
00:04:18,630 --> 00:04:20,160
‫Quindi vogliamo lanciarlo anche noi.

63
00:04:20,490 --> 00:04:24,030
‫E in questo caso, voglio lanciarlo sul personaggio sparatutto in C++ perché non

64
00:04:24,030 --> 00:04:30,120
‫ho bisogno di andare fino in fondo per dire che è sicuramente una versione del progetto di questo perché questa funzione esiste

65
00:04:30,120 --> 00:04:31,410
‫effettivamente a livello C++.

66
00:04:31,800 --> 00:04:33,480
‫Quindi andremo avanti e lanceremo.

67
00:04:33,480 --> 00:04:36,690
‫Se riusciremo nel cast, imposteremo la proprietà is dead.

68
00:04:37,230 --> 00:04:42,360
‫Ora permettetemi di inserire qui alcuni nodi di reindirizzamento per rendere il nostro progetto un po' più

69
00:04:42,750 --> 00:04:43,320
‫gradevole.

70
00:04:44,190 --> 00:04:48,750
‫E poi quello che vogliamo fare è usare questo spara un riferimento al personaggio ora che

71
00:04:48,750 --> 00:04:54,840
‫lo abbiamo lanciato su un personaggio sparato sappiamo che dovrebbe avere questa è una proprietà morta, quindi dovremmo essere in grado di farlo.

72
00:04:55,020 --> 00:04:59,940
‫Una volta che hai compilato e fatto funzionare, puoi ottenere questa proprietà morta e impostarla qui.

73
00:05:00,860 --> 00:05:04,860
‫Quindi è tempo che la tua sfida calcoli se siamo morti o meno.

74
00:05:04,860 --> 00:05:08,190
‫Quindi restituisci il booleano corretto dalla nostra funzione è morta.

75
00:05:08,190 --> 00:05:08,970
‫Questo è il primo passo.

76
00:05:09,240 --> 00:05:15,690
‫Potresti voler usare alcune disuguaglianze con una variabile di salute per questo e quindi collegare la nostra variabile.

77
00:05:15,690 --> 00:05:17,370
‫Il morto è una variabile morta.

78
00:05:17,610 --> 00:05:20,280
‫Nel progetto di animazione non siamo riusciti a farlo.

79
00:05:20,280 --> 00:05:23,250
‫Avevamo solo bisogno fondamentalmente di una compilazione prima di farlo.

80
00:05:23,580 --> 00:05:25,980
‫Metti in pausa il video e sistemalo.

81
00:05:27,460 --> 00:05:27,750
‫Bene.

82
00:05:27,760 --> 00:05:28,270
‫Ben tornato.

83
00:05:28,300 --> 00:05:31,630
‫Passiamo quindi al codice, prima di tutto.

84
00:05:31,930 --> 00:05:36,550
‫Quindi, in modo abbastanza semplice, restituirò un'espressione che restituisce un booleano.

85
00:05:36,820 --> 00:05:43,180
‫Quindi vogliamo dire, la salute è inferiore o uguale a zero, nel qual caso siamo davvero morti?

86
00:05:43,450 --> 00:05:47,470
‫È quanto di più semplice può ottenere una funzione di espressione.

87
00:05:47,830 --> 00:05:49,720
‫Quindi andiamo avanti e costruiamolo.

88
00:05:50,680 --> 00:05:55,540
‫E una volta compilato, possiamo andare su Unreal e collegarlo.

89
00:05:55,540 --> 00:06:02,260
‫Quindi trascinando il personaggio come sparatutto, siamo nodi, qui faremo girare un riferimento al personaggio.

90
00:06:02,530 --> 00:06:08,410
‫Quindi vogliamo fare è morto ci dà questa è una funzione morta, puoi vedere che non ha pin di esecuzione

91
00:06:08,410 --> 00:06:09,340
‫perché è puro.

92
00:06:09,700 --> 00:06:14,770
‫Quindi togliamo questo booleano da quello e lo colleghiamo alla nostra variabile morta.

93
00:06:15,250 --> 00:06:21,280
‫E ora, se andiamo avanti e giochiamo, dovremmo essere effettivamente in grado di uccidere quel personaggio nel mondo.

94
00:06:21,280 --> 00:06:23,980
‫Gli spareremo finché la sua salute non scenderà a zero.

95
00:06:24,280 --> 00:06:25,240
‫Ed ecco qua.

96
00:06:25,240 --> 00:06:28,450
‫L'animazione lo ha ucciso con successo.

