﻿1
00:00:04,350 --> 00:00:04,760
‫Ciao.

2
00:00:04,800 --> 00:00:05,190
‫Ben arrivato.

3
00:00:05,190 --> 00:00:09,750
‫In questa lezione, renderemo il grabber molto più affidabile.

4
00:00:09,750 --> 00:00:16,860
‫E renderemo anche possibile far cadere un componente afferrato in modo da poterlo lanciare in giro e

5
00:00:16,860 --> 00:00:19,890
‫in generale renderlo un po' più utile.

6
00:00:19,920 --> 00:00:21,870
‫Immergiamoci e vediamo come è fatto.

7
00:00:22,850 --> 00:00:28,430
‫Ora, il motivo per cui spesso non siamo in grado di raccogliere questo gargoyle è che

8
00:00:28,430 --> 00:00:35,990
‫i componenti che simulano la fisica per motivi di prestazioni andranno a dormire quando sono stati fermi per un certo periodo di tempo.

9
00:00:35,990 --> 00:00:37,310
‫Ed è quello che stiamo vedendo.

10
00:00:37,310 --> 00:00:43,310
‫Questa simulazione fisica dei gargoyle andrà a dormire e non verrà svegliata quando ci attacchiamo con

11
00:00:43,310 --> 00:00:45,290
‫la nostra maniglia fisica.

12
00:00:45,290 --> 00:00:51,400
‫Quindi quello che dobbiamo imparare a fare è svegliarlo quando lo colpiamo con una traccia sferica.

13
00:00:51,410 --> 00:00:56,420
‫Ora andiamo a dare un'occhiata alla documentazione dei componenti primitivi che abbiamo visto.

14
00:00:56,420 --> 00:01:02,420
‫Il tuo componente primitivo è la cosa restituita dal nostro risultato di successo, ma quello che in realtà è un

15
00:01:02,420 --> 00:01:03,260
‫componente primitivo.

16
00:01:03,440 --> 00:01:10,010
‫Quindi qui nella documentazione si dice che un componente primitivo è un componente di scena che contiene

17
00:01:10,010 --> 00:01:16,160
‫o genera una sorta di geometria ed è reso o utilizzato come dati di collisione.

18
00:01:16,160 --> 00:01:21,770
‫Quindi, in generale, i componenti primitivi sono quelli che possono simulare la fisica.

19
00:01:22,130 --> 00:01:27,830
‫Quindi possiamo aspettarci di trovare alcuni metodi di simulazione fisica qui.

20
00:01:27,830 --> 00:01:32,030
‫E quello che cercherò è una funzione con la parola chiave wake in essa.

21
00:01:32,060 --> 00:01:37,820
‫Esamineremo alcune funzioni finché non ne troviamo una che dice Sveglia tutti i corpi rigidi.

22
00:01:38,270 --> 00:01:43,610
‫I corpi rigidi sono essenzialmente un termine fisico per oggetti che simulano la fisica.

23
00:01:43,610 --> 00:01:44,780
‫Quindi puoi vedere che ha un vuoto.

24
00:01:44,780 --> 00:01:46,700
‫Il tipo restituito non accetta argomenti.

25
00:01:46,700 --> 00:01:52,010
‫Quindi dovremmo essere in grado di chiamarlo semplicemente quando stiamo cercando di attaccarci ad esso.

26
00:01:52,010 --> 00:01:58,220
‫Quindi, se andiamo a prendere un CP all'interno della nostra istruzione if, abbiamo colpito questo componente, stiamo per

27
00:01:58,220 --> 00:01:58,610
‫prenderlo.

28
00:01:58,610 --> 00:02:04,550
‫La prima cosa che dobbiamo fare è forse creare una variabile per memorizzare questo componente primitivo.

29
00:02:04,550 --> 00:02:15,170
‫Quindi avremo un puntatore del componente primitivo chiamato set di componenti hit che è uguale al componente dot

30
00:02:15,470 --> 00:02:17,990
‫get del risultato hit.

31
00:02:18,530 --> 00:02:27,770
‫E quindi usando quel puntatore del componente colpito, possiamo riattivare con la freccia tutti i corpi rigidi e quindi mettere le parentesi e il punto

32
00:02:27,770 --> 00:02:29,690
‫e virgola alla fine.

33
00:02:29,690 --> 00:02:35,900
‫Quindi questo dovrebbe solo dare un calcio a quel componente, svegliarlo in modo che risponda alla maniglia della fisica.

34
00:02:35,930 --> 00:02:39,160
‫Ora sostituiamo dove abbiamo fatto risultati di successo.

35
00:02:39,200 --> 00:02:46,400
‫Non ottenere componenti nella nostra chiamata di handle di fisica per acquisire la posizione del componente perché ora abbiamo una

36
00:02:46,400 --> 00:02:49,460
‫variabile per quello e ricompiliamo quando è fatto.

37
00:02:49,460 --> 00:02:56,480
‫Andiamo avanti e premiamo play e lascia che il gargoyle si sieda un po' sul pavimento per ora e lascialo andare

38
00:02:56,480 --> 00:02:58,910
‫a dormire e poi prova a sollevarlo.

39
00:02:58,910 --> 00:03:05,120
‫E noterai che non abbiamo problemi a raccoglierlo, a lasciarlo sdraiato sul pavimento, qualunque cosa.

40
00:03:05,120 --> 00:03:12,440
‫Andrà tutto bene, svegliare quei corpi rigidi della fisica e iniziare a simularli in modo che possano essere

41
00:03:12,440 --> 00:03:13,910
‫sollevati e afferrati.

42
00:03:13,910 --> 00:03:18,560
‫Ora, potresti aver notato che al momento non siamo in grado di

43
00:03:18,560 --> 00:03:23,300
‫rilasciare l'handle della fisica, quindi sarà la tua sfida farlo nella funzione di rilascio.

44
00:03:23,360 --> 00:03:26,570
‫Quindi chiamerai il componente di rilascio su quella maniglia fisica.

45
00:03:26,570 --> 00:03:29,660
‫Questa è una funzione disponibile sul puntatore dell'handle della fisica.

46
00:03:29,840 --> 00:03:34,910
‫Verificherai prima se abbiamo un componente catturato.

47
00:03:34,910 --> 00:03:40,040
‫Quindi, se ottieni un componente grab che restituisce un puntatore al componente grab, quei punti saranno nulli

48
00:03:40,040 --> 00:03:43,010
‫se l'handle della fisica non sta attualmente afferrando nulla.

49
00:03:43,010 --> 00:03:48,110
‫Quindi puoi usarlo per verificare se abbiamo qualcosa e rilasciare solo se stiamo attualmente afferrando

50
00:03:48,110 --> 00:03:48,530
‫qualcosa.

51
00:03:48,530 --> 00:03:53,090
‫E come bonus, puoi provare a vedere se riusciamo a fissare di nuovo l'obiettivo.

52
00:03:53,090 --> 00:03:58,070
‫Solo se stiamo afferrando qualcosa, ma guarda il video e provaci.

53
00:04:01,590 --> 00:04:02,470
‫Ben tornato.

54
00:04:02,490 --> 00:04:06,090
‫Allora andiamo a prendere una tazza.

55
00:04:06,230 --> 00:04:10,490
‫Andando nella funzione di rilascio e rimuovendo il registro di rilascio.

56
00:04:10,500 --> 00:04:16,650
‫E qui inseriremo un'istruzione if e diremo se e ora dobbiamo entrare in possesso delle

57
00:04:16,650 --> 00:04:18,360
‫nostre maniglie della fisica.

58
00:04:18,360 --> 00:04:25,650
‫Quindi, prima di tutto, faremo un puntatore del componente dell'handle della fisica, che chiameremo l'handle

59
00:04:25,650 --> 00:04:31,410
‫della fisica e lo imposteremo uguale per ottenere l'handle della fisica.

60
00:04:31,590 --> 00:04:40,770
‫Quindi diremo che se l'handle della fisica è uguale a puntatore nullo, vogliamo andare avanti e tornare perché non saremo

61
00:04:40,770 --> 00:04:44,400
‫in grado di fare nulla, rilasciare nulla.

62
00:04:44,400 --> 00:04:51,330
‫Se non abbiamo affatto un handle di fisica, allora vogliamo controllare se attualmente ci stiamo aggrappando a qualcosa con il nostro

63
00:04:51,330 --> 00:04:52,650
‫handle di fisica.

64
00:04:52,650 --> 00:05:03,390
‫Quindi, se, diciamo, se le parentesi del componente afferrato della freccia dell'handle della fisica non sono uguali a un puntatore nullo, all'interno del corpo

65
00:05:04,080 --> 00:05:09,420
‫di questa dichiarazione if significa che abbiamo qualcosa attualmente afferrato, allora faremo

66
00:05:09,420 --> 00:05:16,980
‫un componente di rilascio della freccia dell'handle della fisica , che lo lascerà andare, come suggerisce il

67
00:05:16,980 --> 00:05:17,730
‫nome.

68
00:05:17,730 --> 00:05:24,450
‫E una cosa che non ho fatto nel codice qui, ma probabilmente vale la pena aggiungerla alla tua, è

69
00:05:24,450 --> 00:05:32,160
‫che prima di rilasciare il componente, vale la pena andare avanti e chiamare i componenti catturati e quindi aggiungere i corpi rigidi tutti

70
00:05:32,160 --> 00:05:36,180
‫deboli proprio come abbiamo fatto noi prima di prendere il componente.

71
00:05:36,180 --> 00:05:41,520
‫Perché se dovessimo far crescere un componente e non spostarci per un po', potrebbe anche andare a dormire.

72
00:05:41,520 --> 00:05:43,470
‫E quindi rilasciarlo non servirebbe a nulla.

73
00:05:43,470 --> 00:05:51,300
‫Quindi vale la pena aggiungere questo perché catturerebbe quel caso d'angolo e non vogliamo impostare la posizione di destinazione in

74
00:05:51,300 --> 00:05:56,790
‫tick se abbiamo un handle di fisica che attualmente non sta afferrando nulla.

75
00:05:56,790 --> 00:06:02,190
‫Quindi qui nei nostri componenti tick, inseriremo un'istruzione if che sarà esattamente la stessa.

76
00:06:02,190 --> 00:06:11,730
‫Dirà che la freccia della maniglia della fisica ottiene un componente afferrato non uguale al puntatore nullo.

77
00:06:11,760 --> 00:06:18,810
‫Quindi, nel corpo dell'istruzione if, inseriremo anche il calcolo della posizione di destinazione e l'impostazione della

78
00:06:18,810 --> 00:06:22,380
‫posizione di destinazione in quella maniglia fisica.

79
00:06:22,380 --> 00:06:24,330
‫Ricompiliamo e proviamo questo.

80
00:06:24,330 --> 00:06:26,070
‫Andiamo avanti e premiamo play.

81
00:06:26,970 --> 00:06:28,920
‫E prova ad afferrare il gargoyle.

82
00:06:28,920 --> 00:06:33,420
‫E poi se lascio andare il mouse, cade di nuovo sul pavimento.

83
00:06:33,420 --> 00:06:39,000
‫Quindi e sembra non essere influenzato dal fatto che sia sveglio o addormentato.

84
00:06:39,000 --> 00:06:43,610
‫Sembra che lo stiamo svegliando, indipendentemente dal fatto che lo facciamo ogni volta che lo raccogliamo, essenzialmente.

85
00:06:43,620 --> 00:06:46,950
‫Quindi sembra funzionare esattamente come vorrei.

86
00:06:46,950 --> 00:06:47,910
‫Non si blocca.

87
00:06:47,910 --> 00:06:49,950
‫Sembra quasi giusto.

88
00:06:49,980 --> 00:06:56,520
‫L'unica cosa leggermente strana è che quando ci passo dentro, puoi vedere che fa questo strano tremolio perché

89
00:06:56,520 --> 00:06:59,550
‫in realtà si scontra con il giocatore.

90
00:06:59,550 --> 00:07:06,840
‫Ora possiamo risolvere questo problema solo un po' andando al nostro gargoyle nel riquadro dei dettagli, selezionando tutta la

91
00:07:06,840 --> 00:07:13,950
‫categoria, scorrendo verso il basso fino alla collisione e guardando il nostro preset di collisione personalizzato e in basso

92
00:07:13,950 --> 00:07:15,510
‫nelle risposte dell'oggetto.

93
00:07:15,510 --> 00:07:17,760
‫Vedremo un po' di più su questo più avanti.

94
00:07:17,760 --> 00:07:20,910
‫C'è una risposta dell'oggetto pedone.

95
00:07:20,910 --> 00:07:25,650
‫Questo in pratica dice: dovrei scontrarmi con il pedone o cosa?

96
00:07:25,680 --> 00:07:27,570
‫Quale dovrebbe essere la mia risposta al pedone?

97
00:07:27,570 --> 00:07:31,740
‫Bene, lo imposterò in modo che si sovrapponga al pedone.

98
00:07:31,740 --> 00:07:36,690
‫E questo significa che se si scontra con me, essenzialmente lo ignora.

99
00:07:36,690 --> 00:07:41,880
‫E poi un'altra cosa che dobbiamo fare è perché questo è in realtà composto da due mesh statiche,

100
00:07:41,880 --> 00:07:43,890
‫hanno le proprie impostazioni di collisione.

101
00:07:43,890 --> 00:07:46,320
‫Vado giù al cumulo di terra.

102
00:07:46,320 --> 00:07:48,720
‫Quella è la cosa sotto il gargoyle.

103
00:07:49,110 --> 00:07:52,350
‫E qui mi limiterò a semplificare le cose.

104
00:07:52,350 --> 00:07:57,480
‫Farò la parte del cumulo di terra, non ho collisione.

105
00:07:57,490 --> 00:08:00,300
‫Quindi lo passerò al preset no collisione.

106
00:08:00,510 --> 00:08:05,250
‫Poi vado avanti e premo play, afferro il gargoyle dal pavimento.

107
00:08:05,250 --> 00:08:09,540
‫E ora puoi vedere quando sto correndo con esso, non c'è nessuno di quegli

108
00:08:09,540 --> 00:08:14,730
‫strani glitch perché non sta cercando di entrare in collisione con la mesh di collisione del giocatore.

109
00:08:14,760 --> 00:08:15,540
‫Roba fantastica.

110
00:08:15,540 --> 00:08:22,170
‫In questa lezione abbiamo imparato come rendere la nostra presa molto più affidabile e anche come possiamo rilasciare

111
00:08:22,170 --> 00:08:23,790
‫la componente di presa.

112
00:08:23,790 --> 00:08:24,510
‫Roba fantastica.

113
00:08:24,510 --> 00:08:26,190
‫Ci vediamo alla prossima lezione.

