﻿1
00:00:04,170 --> 00:00:04,650
‫Hej.

2
00:00:04,650 --> 00:00:05,580
‫Witamy spowrotem.

3
00:00:05,610 --> 00:00:09,390
‫Teraz wiemy, że musimy uzyskać wynik trafienia pod kursorem.

4
00:00:09,420 --> 00:00:14,070
‫Porozmawiamy trochę więcej o tym, jak to działa i co to oznacza w tym filmie.

5
00:00:14,250 --> 00:00:20,520
‫Naszym celem jest więc umieszczenie wyników trafień pod kursorem i pokazanie tej lokalizacji, a możemy to

6
00:00:20,520 --> 00:00:22,090
‫zrobić, rysując sferę debugowania.

7
00:00:22,110 --> 00:00:24,150
‫Dowiemy się również, jak to zrobić.

8
00:00:24,180 --> 00:00:27,300
‫Porozmawiajmy więc o czymś, co nazywa się wynikiem trafienia.

9
00:00:27,600 --> 00:00:30,550
‫W grach często będziesz chciał zrobić coś takiego.

10
00:00:30,570 --> 00:00:32,520
‫Będziemy mieli punkt w kosmosie.

11
00:00:32,550 --> 00:00:39,210
‫Nazwiemy ten punkt początkiem i będzie on miał wektor typu F i będziemy mieli lokalizację końcową.

12
00:00:39,240 --> 00:00:43,260
‫Będzie to również punkt w przestrzeni wektora typu F.

13
00:00:43,410 --> 00:00:48,720
‫Teraz powiedzmy, że chcielibyśmy narysować niewidzialną linię od punktu początkowego do punktu końcowego.

14
00:00:48,750 --> 00:00:54,450
‫A w chwili, gdy rysujemy tę linię, chcielibyśmy zobaczyć, czy pomiędzy początkową i końcową lokalizacją

15
00:00:54,450 --> 00:00:55,800
‫są jakieś obiekty.

16
00:00:56,280 --> 00:01:01,470
‫Jeśli tak, to ta linia, którą rysujemy w przestrzeni, uderzy w ten obiekt.

17
00:01:01,470 --> 00:01:05,400
‫Pozornie, kiedy to się dzieje, nazywamy to wydarzeniem hitu.

18
00:01:05,430 --> 00:01:10,820
‫Teraz, kiedy narysujemy niewidzialną linię w ten sposób, nazywa się to wykonywaniem śledzenia linii.

19
00:01:10,830 --> 00:01:14,520
‫A kiedy w coś trafimy, mówimy, że mamy trafienie śladowe.

20
00:01:14,550 --> 00:01:21,240
‫Teraz, jeśli coś trafimy i otrzymamy zdarzenie trafienia, to trafienie śledzenia przechowuje informacje w strukturze

21
00:01:21,240 --> 00:01:22,820
‫zwanej wynikiem trafienia.

22
00:01:22,830 --> 00:01:24,700
‫Jego typ to wynik trafienia F.

23
00:01:24,720 --> 00:01:31,560
‫Teraz struktura wyników trafień F zawiera zmienne, które przechowują informacje o zdarzeniu trafienia, w

24
00:01:31,560 --> 00:01:38,680
‫tym lokalizację trafienia jako wektor f w przestrzeni i aktora, którego trafiliśmy, a także inne informacje.

25
00:01:38,700 --> 00:01:44,100
‫Teraz, kiedy wykonujemy śledzenie linii, robimy to, określając kanał kolizji.

26
00:01:44,130 --> 00:01:48,390
‫Zwykle przy śladach linii wybieramy kanał zwany widocznością.

27
00:01:48,510 --> 00:01:56,070
‫Istnieje wyliczenie zwane E Collision Channel iw tym wyliczeniu jest stała wyliczeniowa zwana widocznością

28
00:01:56,070 --> 00:01:57,030
‫XY.

29
00:01:57,180 --> 00:02:01,470
‫Jest to jeden z parametrów, które określamy podczas śledzenia linii.

30
00:02:01,740 --> 00:02:07,380
‫Teraz, jeśli określimy kanał widoczności, oznacza to, że obiekty, które są ustawione na blokowanie kanału

31
00:02:07,380 --> 00:02:10,980
‫widoczności w swoich ustawieniach kolizji, będą rejestrować zdarzenia trafień.

32
00:02:11,130 --> 00:02:16,350
‫Obiekty, które nie są ustawione do blokowania kanału widoczności, nie będą generować zdarzeń trafień.

33
00:02:16,380 --> 00:02:19,350
‫Teraz chcielibyśmy, aby wynik śledzenia znajdował się pod kursorem.

34
00:02:19,590 --> 00:02:23,040
‫Wyobraź sobie, że mamy tu ekran, a teraz jest nasz kursor.

35
00:02:23,040 --> 00:02:28,620
‫Na końcu naszego kursora mamy punkt na ekranie, kiedy używamy funkcji, aby uzyskać wynik trafienia

36
00:02:28,620 --> 00:02:29,730
‫pod kursorem.

37
00:02:29,760 --> 00:02:35,040
‫To, co się dzieje, to to, że mamy kamerę i może ona zobaczyć niektóre obiekty na świecie, takie jak podłoga tutaj.

38
00:02:35,040 --> 00:02:40,950
‫Wykonujemy narysowanie linii z kamery w punkcie na ekranie odpowiadającym położeniu naszego

39
00:02:40,950 --> 00:02:45,090
‫kursora i wystrzeliwujemy narysowanie linii prosto w świat.

40
00:02:45,090 --> 00:02:51,570
‫A jeśli coś trafimy, wygenerujemy zdarzenie trafienia i przechowamy informacje w strukturze wyniku trafienia.

41
00:02:52,080 --> 00:02:54,470
‫Dowiedzmy się więc, jak możemy to zrobić.

42
00:02:54,480 --> 00:03:01,560
‫Jestem tutaj w czołgu CP i chciałbym uzyskać wynik trafienia pod kursorem co klatkę, co oznacza, że

43
00:03:01,560 --> 00:03:03,240
‫potrzebujemy funkcji tick.

44
00:03:03,240 --> 00:03:08,160
‫Więc znowu wracamy do bazy i znajdujemy tutaj naszą funkcję tikową.

45
00:03:08,190 --> 00:03:14,100
‫Teraz nie używamy jej do niczego w pionku podstawowym, więc możemy przenieść tę funkcję do klasy czołgu, tak jak zrobiliśmy

46
00:03:14,100 --> 00:03:15,570
‫to z Begin Play.

47
00:03:15,570 --> 00:03:21,600
‫Więc zamierzam podświetlić deklarację funkcji wraz z jej komentarzem i skopiować ją.

48
00:03:21,600 --> 00:03:28,590
‫A potem usunę całą tę sekcję, public i całą resztę, a potem wrócę do Tank H

49
00:03:28,590 --> 00:03:33,150
‫i tutaj w sekcji public zamierzam wkleić deklarację funkcji ticka.

50
00:03:33,150 --> 00:03:37,620
‫Teraz nie używamy go w pionku podstawowym, więc usunę funkcję tika z pionka podstawowego.

51
00:03:37,680 --> 00:03:40,710
‫CP Teraz zniknął z pionka podstawowego.

52
00:03:41,340 --> 00:03:47,880
‫Teraz mamy tu zadeklarowaną intencję, ale musimy również zdefiniować funkcję w zbiorniku.

53
00:03:48,060 --> 00:03:54,180
‫CP Zrobię to tutaj w zbiorniku DHCP, tuż pod komponentem wejściowym ustawień odtwarzacza.

54
00:03:54,180 --> 00:03:56,400
‫Więc powiemy void tick.

55
00:03:57,340 --> 00:03:59,620
‫Zajmuje pływak o nazwie Delta Time.

56
00:04:00,940 --> 00:04:02,350
‫A oto nasze ciało.

57
00:04:02,380 --> 00:04:09,180
‫Teraz znowu potrzebujemy zbiornika tuż przed funkcją tick, wraz z operatorem zakresu rozdzielczości.

58
00:04:09,190 --> 00:04:14,530
‫Musimy też wywołać super tik i przejść w czasie delta.

59
00:04:16,450 --> 00:04:19,240
‫Więc teraz mamy zaznaczenie w klasie czołgów.

60
00:04:19,450 --> 00:04:23,560
‫To, co chcemy zrobić, to uzyskać wyniki trafień pod kursorem.

61
00:04:23,710 --> 00:04:25,450
‫Oto jak to robimy.

62
00:04:25,480 --> 00:04:31,260
‫Funkcja, której zamierzamy użyć, znajduje się na kontrolerze gracza i nazywana jest wynikiem trafienia pod kursorem.

63
00:04:31,270 --> 00:04:32,800
‫Rozmawialiśmy o tym.

64
00:04:32,980 --> 00:04:34,530
‫Oto składnia.

65
00:04:34,540 --> 00:04:36,160
‫Zajmuje kanał śledzenia.

66
00:04:36,190 --> 00:04:40,660
‫Pamiętaj, że musimy określić kanał śledzenia i użyjemy widoczności.

67
00:04:40,840 --> 00:04:43,690
‫Teraz mamy dwa dodatkowe parametry wejściowe.

68
00:04:43,720 --> 00:04:46,720
‫Pierwszym z nich jest bool zwany kompleksem śladowym B.

69
00:04:46,750 --> 00:04:49,120
‫Porozmawiamy o tym, co to oznacza za sekundę.

70
00:04:49,210 --> 00:04:52,270
‫A trzeci parametr wejściowy to wynik trafienia F.

71
00:04:52,390 --> 00:04:57,820
‫Teraz kliknę na wynik trafienia F, aby zobaczyć ten typ w dokumentacji.

72
00:04:58,480 --> 00:05:01,960
‫A jeśli przewinę w dół, zobaczymy niektóre zmienne.

73
00:05:01,990 --> 00:05:06,670
‫Jeden z nich nazywa się aktor, a jego opis mówi „Aktor trafiony śladem”.

74
00:05:06,700 --> 00:05:13,510
‫Mamy również uderzenie blokujące B, które wskazuje, czy to uderzenie było wynikiem kolizji blokującej.

75
00:05:13,750 --> 00:05:17,770
‫Teraz, wśród innych zmiennych, mamy takie rzeczy jak punkt wpływu.

76
00:05:18,010 --> 00:05:22,000
‫To miejsce w kosmosie, w którym faktycznie w coś uderzyliśmy.

77
00:05:22,600 --> 00:05:26,150
‫Dlaczego więc nie spróbujemy wywołać tej funkcji?

78
00:05:26,170 --> 00:05:32,170
‫Najpierw chcemy naszego gracza, kontrolera i dzięki temu, co tutaj zrobiliśmy i zaczęliśmy grać, mamy

79
00:05:32,170 --> 00:05:33,370
‫gracza, kontrolera, ref.

80
00:05:33,400 --> 00:05:38,770
‫Teraz pierwszą rzeczą, którą powinniśmy zrobić, to sprawdzić, czy ref kontrolera gracza jest prawidłowy.

81
00:05:39,100 --> 00:05:42,140
‫Zawsze możemy przekazać wskaźnik do instrukcji if.

82
00:05:42,160 --> 00:05:47,270
‫Zwróci true, jeśli sam wskaźnik nie jest wskaźnikiem zerowym.

83
00:05:47,290 --> 00:05:52,930
‫Jeśli jest to pusty wskaźnik, zwróci false w instrukcji if i nigdy nie dotrzemy do wnętrza

84
00:05:52,930 --> 00:05:53,920
‫instrukcji if.

85
00:05:54,070 --> 00:05:59,740
‫Zawsze dobrze jest sprawdzić nasze wskaźniki i upewnić się, że nie są one puste, zanim ich użyjemy.

86
00:06:00,010 --> 00:06:04,960
‫Teraz dostaniemy naszego gracza, kontroler ref i użyjemy operatora strzałki

87
00:06:04,960 --> 00:06:08,950
‫do wywołania funkcji, uzyskania wyniku trafienia pod kursorem.

88
00:06:09,100 --> 00:06:12,670
‫Teraz widzimy w wyskakującym okienku, że mamy trzy parametry wejściowe.

89
00:06:12,850 --> 00:06:14,650
‫Pierwszym z nich jest kanał śledzenia.

90
00:06:14,950 --> 00:06:22,030
‫Użyjemy EA Collision Channel i jeśli wpiszemy dwa dwukropki, otrzymamy listę rozwijaną, która pokazuje nam

91
00:06:22,030 --> 00:06:26,350
‫wszystkie różne stałe wyliczenia w wyliczeniu EA Collision Channel.

92
00:06:26,530 --> 00:06:34,540
‫Chcemy użyć widoczności, więc wpiszemy widoczność XY, aby określić, że używamy kanału

93
00:06:34,540 --> 00:06:35,230
‫widoczności.

94
00:06:35,440 --> 00:06:41,470
‫Teraz następny parametr nazywa się B Trace Complex i przekażemy temu fałsz.

95
00:06:41,500 --> 00:06:44,590
‫Teraz omówimy za kilka minut, co to oznacza.

96
00:06:44,590 --> 00:06:46,900
‫Ale na razie użyjemy false.

97
00:06:47,110 --> 00:06:50,300
‫Teraz dla trzeciego parametru potrzebujemy wyniku trafienia.

98
00:06:50,320 --> 00:06:53,140
‫Jest to struktura typu trafienia typu F.

99
00:06:53,170 --> 00:06:59,500
‫Teraz, jeśli najedziesz na to kursorem, zobaczysz, że wynik trafienia F jest przekazywany jako odwołanie, jak

100
00:06:59,500 --> 00:07:02,740
‫wskazuje operator odniesienia, który wygląda jak ampersand.

101
00:07:02,890 --> 00:07:08,320
‫Teraz zwykle, gdy przekazujesz coś jako odwołanie, jest to odwołanie do kosztu, co oznacza, że funkcja nie będzie

102
00:07:08,320 --> 00:07:09,730
‫w stanie tego zmienić.

103
00:07:09,730 --> 00:07:13,870
‫Ale tutaj przekazujemy wynik trafienia F jako niestałe odniesienie.

104
00:07:14,110 --> 00:07:20,120
‫Jest to zazwyczaj wskazówka, że funkcja jest przeznaczona do bezpośredniej zmiany tego parametru wejściowego.

105
00:07:20,140 --> 00:07:27,730
‫To, co otrzyma wynik trafienia pod kursorem, to wypełnienie tych zmiennych w wyniku trafienia informacjami

106
00:07:27,730 --> 00:07:29,260
‫o wyniku trafienia.

107
00:07:29,290 --> 00:07:32,710
‫Oznacza to, że musimy przekazać jeden z tych wyników f hit.

108
00:07:32,740 --> 00:07:37,540
‫Utworzymy tutaj zmienną lokalną w wyniku sprawdzenia jeśli typu F trafienia.

109
00:07:38,380 --> 00:07:44,650
‫Możemy wywołać ten wynik trafienia i możemy po prostu przekazać to N jako trzeci parametr wejściowy.

110
00:07:44,830 --> 00:07:50,320
‫Teraz, po wywołaniu tej funkcji, ten wynik trafienia zostanie wypełniony danymi o tym

111
00:07:50,320 --> 00:07:51,180
‫śladzie linii.

112
00:07:51,190 --> 00:08:00,040
‫Na przykład możemy uzyskać dostęp do aktora z kropką wyniku trafienia, aby uzyskać aktora, który został trafiony, lub punkt wpływu kropki, aby uzyskać

113
00:08:00,040 --> 00:08:03,430
‫punkt w przestrzeni, w którym mieliśmy zdarzenie trafienia.

114
00:08:03,580 --> 00:08:08,470
‫Tak więc wynik trafienia jest tym, czego użyjemy, aby uzyskać informacje o śledzeniu linii.

115
00:08:08,860 --> 00:08:13,450
‫Teraz często fajnie jest móc zobaczyć wynik śledzenia linii.

116
00:08:13,450 --> 00:08:18,010
‫Możemy łatwo zwizualizować wynik śledzenia linii, rysując sferę debugowania.

117
00:08:18,340 --> 00:08:24,580
‫Kule debugowania to proste kształty, które rysujemy w przestrzeni i świetnie nadają się do pokazywania lokalizacji i

118
00:08:24,580 --> 00:08:26,380
‫używamy ich podczas debugowania.

119
00:08:26,380 --> 00:08:29,380
‫W rzeczywistości nie używamy sfer debugowania w grze zmianowej.

120
00:08:29,410 --> 00:08:32,150
‫Zobaczmy więc, jak możemy narysować jedną z tych sfer debugowania.

121
00:08:32,170 --> 00:08:36,430
‫Oto dokumentacja funkcji zwanej draw debug sphere.

122
00:08:36,430 --> 00:08:38,800
‫Istnieje w pomocnikach debugowania rysowania.

123
00:08:39,850 --> 00:08:45,160
‫Możemy więc skopiować ten nagłówek i dołączyć go wszędzie tam, gdzie chcemy wywołać sferę debugowania rysowania.

124
00:08:45,190 --> 00:08:47,220
‫Teraz spójrz na wszystkie parametry wejściowe.

125
00:08:47,230 --> 00:08:52,240
‫Po pierwsze, bierze świat w ten sposób, że wie, do którego świata narysować sferę.

126
00:08:52,270 --> 00:08:57,100
‫Pobiera wektor F dla środka kuli oraz pływak dla promienia.

127
00:08:57,130 --> 00:09:00,800
‫Liczba segmentów dla tej kuli jest równa N 32.

128
00:09:00,820 --> 00:09:04,810
‫Im więcej segmentów, tym bardziej okrągła kula przybiera kolor F.

129
00:09:04,840 --> 00:09:08,350
‫Dzięki temu wie, w jakim kolorze narysować tę sferę.

130
00:09:08,380 --> 00:09:11,080
‫Chce wiedzieć, czy chcesz trwałych linii.

131
00:09:11,080 --> 00:09:15,220
‫Innymi słowy, czy linie powinny zniknąć natychmiast, czy też powinny się utrzymywać?

132
00:09:15,220 --> 00:09:18,760
‫Jeśli się upierają, chce poznać czas życia kuli.

133
00:09:18,760 --> 00:09:20,910
‫Kiedy powinien przestać rysować kulę?

134
00:09:20,920 --> 00:09:25,660
‫Jeśli nie rysujesz trwałych linii, powiedzmy, że chciałbyś narysować je dla jednej klatki,

135
00:09:25,660 --> 00:09:27,880
‫wtedy przekażesz ujemną jako czas życia.

136
00:09:27,910 --> 00:09:34,240
‫Teraz ostatnie dwa parametry są opcjonalne, więc zachowamy prostotę, omawiając tylko pierwsze siedem

137
00:09:34,240 --> 00:09:35,110
‫parametrów.

138
00:09:35,110 --> 00:09:36,520
‫Zobaczmy, jak to działa.

139
00:09:36,730 --> 00:09:42,100
‫Narysuję teraz sferę debugowania na górze, dołączę pomoce debugowania rysowania.

140
00:09:42,850 --> 00:09:46,630
‫To tam jest zadeklarowana funkcja sfer debugowania rysowania.

141
00:09:46,660 --> 00:09:52,900
‫Teraz zejdźmy na dół, aby rozpocząć zabawę i po prostu narysuj sferę debugowania, aby zobaczyć, jak to działa.

142
00:09:52,900 --> 00:09:58,030
‫Więc zamierzam wywołać sferę debugowania draw i .

143
00:09:58,110 --> 00:10:00,780
‫Pierwszy parametr wejściowy to nowy świat.

144
00:10:01,110 --> 00:10:09,420
‫Możemy uzyskać nasz świat w dowolnym momencie, dzwoniąc Get World, Get World Returns nowy świat wskazujący na nasz

145
00:10:09,420 --> 00:10:10,500
‫obecny świat.

146
00:10:10,500 --> 00:10:12,930
‫Więc to zadowoli pierwsze wejście.

147
00:10:13,260 --> 00:10:16,420
‫Następnie potrzebujemy wektora f dla środka kuli.

148
00:10:16,440 --> 00:10:22,380
‫Teraz nazywamy to i zaczynamy grać, więc mogę po prostu zadzwonić do lokalizacji aktora, a to

149
00:10:22,380 --> 00:10:24,130
‫otrzyma lokalizację naszego stawu.

150
00:10:24,150 --> 00:10:26,400
‫Ponieważ jesteśmy w klasie czołgów.

151
00:10:26,640 --> 00:10:29,250
‫Teraz zamierzam nieco podnieść kulę.

152
00:10:29,250 --> 00:10:41,380
‫Więc dodam wektor F z zerową kropką F dla x zero kropki F dla Y i powiem 200 F dla Z.

153
00:10:41,400 --> 00:10:45,120
‫Teraz zamierzam umieścić te parametry wejściowe, każdy w osobnym wierszu.

154
00:10:45,120 --> 00:10:48,300
‫Jasne jest więc, co przekazujemy dla każdego wejścia.

155
00:10:48,330 --> 00:10:55,740
‫Drugie dane wejściowe to otrzymanie tego wyrażenia, które jest lokalizacją aktora oraz wektorem skierowanym w górę

156
00:10:55,740 --> 00:10:57,230
‫o długości 200.

157
00:10:57,240 --> 00:11:04,260
‫Dodanie tych dwóch wektorów razem da mi położenie zbiornika podniesionego w osi Z o 200

158
00:11:04,260 --> 00:11:04,950
‫jednostek.

159
00:11:04,980 --> 00:11:09,600
‫Teraz następnym parametrem wejściowym będzie promień kuli.

160
00:11:09,870 --> 00:11:16,970
‫Wybiorę 100 F tylko po to, abyśmy mogli zobaczyć, jak wygląda sfera debugowania o promieniu 100.

161
00:11:16,980 --> 00:11:18,900
‫Następna jest liczba segmentów.

162
00:11:18,990 --> 00:11:20,470
‫wybieram 12.

163
00:11:20,490 --> 00:11:22,130
‫Zobaczymy, jak to wygląda.

164
00:11:22,140 --> 00:11:29,640
‫Teraz dla koloru F istnieje klasa koloru F i ma wiele wbudowanych kolorów, takich jak czerwony.

165
00:11:29,850 --> 00:11:34,410
‫Teraz dla wartości logicznej zwanej B liniami trwałymi, wybiorę wartość true.

166
00:11:34,410 --> 00:11:38,280
‫A dla następnego parametru wejściowego mamy informację o żywotności.

167
00:11:38,280 --> 00:11:40,850
‫Ma domyślną wartość ujemną.

168
00:11:40,860 --> 00:11:44,610
‫Oznacza to, że domyślnie narysuje sferę debugowania dla pojedynczej klatki.

169
00:11:44,610 --> 00:11:52,770
‫Ale zamierzam przejść w 30 F, żeby otrzymać kulę na 30 sekund i mogę pominąć dwa ostatnie parametry.

170
00:11:52,770 --> 00:11:55,670
‫Oto nasze wywołanie funkcji, aby narysować sferę debugowania.

171
00:11:55,680 --> 00:11:58,260
‫Skompilujmy to i zobaczmy, jak to wygląda.

172
00:11:58,710 --> 00:12:00,210
‫Ok, więc wróciłem do edytora.

173
00:12:00,210 --> 00:12:03,750
‫Zamierzam otworzyć drugie okno, abyśmy mogli zobaczyć to na pełnym ekranie.

174
00:12:03,750 --> 00:12:10,650
‫Mogę przejść do portów widoku okna i wybrać Viewport dwa, a teraz widzę to drugie okno.

175
00:12:10,680 --> 00:12:15,300
‫Po otwarciu może nie być pełnego ekranu, ale zawsze możesz go zmaksymalizować.

176
00:12:15,330 --> 00:12:18,570
‫Teraz mogę zagrać w grę z alt p.

177
00:12:18,600 --> 00:12:19,770
‫Teraz sprawdź to.

178
00:12:19,770 --> 00:12:21,300
‫Oto nasza sfera debugowania.

179
00:12:21,330 --> 00:12:23,610
‫Zauważ, że nie jest idealnie okrągły.

180
00:12:23,610 --> 00:12:26,570
‫Wybraliśmy 12 jako liczbę segmentów.

181
00:12:26,580 --> 00:12:30,960
‫Im więcej segmentów wybierzesz, tym więcej linii potrzeba do narysowania kuli.

182
00:12:30,990 --> 00:12:34,380
‫To jest kula o promieniu 100.

183
00:12:34,380 --> 00:12:40,170
‫Jest dość duży, a środek kuli znajduje się w miejscu czołgu, plus 200 jednostek w

184
00:12:40,170 --> 00:12:40,740
‫powietrzu.

185
00:12:40,740 --> 00:12:43,950
‫W ten sposób możemy narysować sfery debugowania.

186
00:12:44,130 --> 00:12:49,890
‫Więc Twoim wyzwaniem jest narysowanie sfery debugowania za pomocą wyniku śledzenia pod naszym kursorem.

187
00:12:49,890 --> 00:12:55,140
‫Narysuj więc sferę debugowania w naszej nowej instrukcji if, w której sprawdzamy, czy ref kontrolera gracza nie ma wartości

188
00:12:55,140 --> 00:12:55,680
‫NULL.

189
00:12:55,710 --> 00:13:02,520
‫Teraz korzystając z naszego wyniku trafienia, uzyskaj punkt uderzenia z wyniku trafienia i użyj go jako Centrum

190
00:13:02,520 --> 00:13:03,240
‫Sfery.

191
00:13:03,390 --> 00:13:09,510
‫Teraz dla parametru wejściowego linii trwałych użyj wartości false, a dla czasu trwania użyj wartości ujemnej.

192
00:13:09,510 --> 00:13:14,250
‫Spowoduje to narysowanie kuli dla pojedynczej klatki, co jest w porządku, ponieważ nazywamy

193
00:13:14,250 --> 00:13:16,530
‫to każdą klatką wewnątrz funkcji tic.

194
00:13:16,530 --> 00:13:20,490
‫Zatrzymaj więc wideo i narysuj sferę debugowania w funkcji zaznaczenia.

195
00:13:23,240 --> 00:13:23,570
‫Dobra.

196
00:13:23,570 --> 00:13:24,920
‫Więc wróciłem do Tanka.

197
00:13:26,180 --> 00:13:32,480
‫Teraz mam to wywołanie funkcji sfer debugowania rysowania tutaj i zaczynam grać, więc mogę to skopiować i po

198
00:13:32,480 --> 00:13:38,450
‫prostu usunąć to z rozpoczęcia odtwarzania, a my wrócimy do tiku tutaj wewnątrz naszej instrukcji if i

199
00:13:38,450 --> 00:13:42,380
‫po prostu wkleimy go tutaj i zmienimy niektóre parametry wejściowe.

200
00:13:42,380 --> 00:13:46,490
‫Po pierwsze, zmieniamy położenie środka kuli.

201
00:13:46,490 --> 00:13:47,960
‫Użyjemy wyniku trafienia.

202
00:13:47,960 --> 00:13:51,200
‫Więc powiem, że punkt uderzenia w wynik trafienia.

203
00:13:51,440 --> 00:13:54,440
‫Teraz, jeśli chodzi o promień, chciałbym go nieco zmniejszyć.

204
00:13:54,440 --> 00:13:56,510
‫Zróbmy to około 25.

205
00:13:56,810 --> 00:13:57,320
‫W porządku.

206
00:13:57,320 --> 00:13:59,360
‫Jeśli tego nie zrobiłeś, ja po prostu to robię.

207
00:13:59,360 --> 00:14:01,280
‫Więc kula nie jest taka duża.

208
00:14:01,280 --> 00:14:06,230
‫Teraz przedostatni parametr, który przekazujemy, dotyczy trwałych linii.

209
00:14:06,230 --> 00:14:12,500
‫Przekażę fałsz i przez czas trwania zamiast 30 sekund użyję ujemnego jednego punktu

210
00:14:12,500 --> 00:14:13,190
‫F.

211
00:14:13,190 --> 00:14:18,920
‫W ten sposób otrzymamy sferę dla pojedynczej klatki, co jest w porządku, znowu wywołujemy to w funkcji tiku,

212
00:14:18,920 --> 00:14:21,560
‫więc będziemy wywoływać to w każdej klatce.

213
00:14:21,560 --> 00:14:23,300
‫Przejdźmy dalej i skompilujmy to.

214
00:14:23,750 --> 00:14:25,130
‫Teraz wróć do edytora.

215
00:14:25,130 --> 00:14:28,010
‫Jeśli teraz wcisnę Play, sprawdź to.

216
00:14:28,040 --> 00:14:34,280
‫Mam sferę debugowania i jest ona rysowana w punkcie wpływu linii pod kursorem.

217
00:14:34,280 --> 00:14:42,590
‫Teraz możemy przesunąć to w górę ścian i na inne obiekty, a ślad uderza w te obiekty, ponieważ są ustawione

218
00:14:42,590 --> 00:14:44,810
‫tak, aby blokować kanał widoczności.

219
00:14:44,840 --> 00:14:46,460
‫Całkiem niesamowite teraz.

220
00:14:46,460 --> 00:14:50,630
‫Obiecałem, że omówimy śledzenie złożone kontra proste śledzenie.

221
00:14:50,660 --> 00:14:53,510
‫Pokażę ci coś podczas gry.

222
00:14:53,510 --> 00:14:57,770
‫Kliknijmy w rzutni, aby mieć kontrolę nad naszą dłonią.

223
00:14:57,770 --> 00:15:02,360
‫Teraz naciśnij klawisz tyldy i wpisz polecenie konsoli pokaż kolizję.

224
00:15:02,360 --> 00:15:07,610
‫Teraz może nie być tak łatwo zobaczyć na moim ekranie, ale na pewno możesz to zobaczyć na swoim ekranie.

225
00:15:07,610 --> 00:15:10,880
‫Zwróć uwagę na kolizję naszych pionków.

226
00:15:10,910 --> 00:15:18,020
‫Widzimy nie tylko kapsułę, ale także tę objętość kolizji wokół siatki naszego czołgu i wieży.

227
00:15:18,020 --> 00:15:20,000
‫To jest prosta kolizja.

228
00:15:20,090 --> 00:15:24,050
‫Pozwólcie, że pokażę wam bardzo szybko, gdzie możemy zobaczyć prostą kolizję.

229
00:15:24,080 --> 00:15:31,250
‫Zajmę się zasobami i siatkami i jeśli kliknę dwukrotnie, powiedzmy, tutaj bazę czołgów, zobaczymy

230
00:15:31,250 --> 00:15:32,690
‫złożoną kolizję.

231
00:15:32,690 --> 00:15:39,500
‫Jeśli kliknę tę ikonę pokazu u góry i wybiorę kolizję złożoną, widzę wszystkie wielokąty w

232
00:15:39,500 --> 00:15:42,410
‫kolizji złożonej, a jest ich dużo.

233
00:15:42,440 --> 00:15:49,370
‫Jeśli ponownie kliknę ikonę pokazu i tym razem zaznaczę pole wyboru obok Prostej kolizji, zauważ, że jest

234
00:15:49,370 --> 00:15:51,020
‫inny wolumin kolizji.

235
00:15:51,020 --> 00:15:56,780
‫Nazywa się to kadłubem kolizyjnym i ma znacznie mniej geometrii.

236
00:15:56,780 --> 00:16:00,950
‫Przy takiej objętości kolizyjnej istnieje mniejsza liczba wielokątów.

237
00:16:00,950 --> 00:16:06,230
‫To jest to, co silnik fizyki wykorzystuje do wykrywania nakładania się zdarzeń trafień.

238
00:16:06,230 --> 00:16:11,360
‫Gdyby używał złożonej kolizji, wymagałby znacznie więcej obliczeń.

239
00:16:11,360 --> 00:16:17,780
‫Właśnie dlatego mamy proste woluminy kolizji, więc znacznie lepiej dla wydajności podczas

240
00:16:17,780 --> 00:16:23,270
‫śledzenia linii, jeśli śledzimy kolizję prostą zamiast kolizji złożonej.

241
00:16:23,870 --> 00:16:27,200
‫Więc teraz mamy wynik trafienia pod kursorem.

242
00:16:27,290 --> 00:16:32,480
‫Dotarcie tam wymagało trochę pracy, ale teraz to mamy i udowodniliśmy to, pokazując tę lokalizację za

243
00:16:32,480 --> 00:16:33,650
‫pomocą sfery debugowania.

244
00:16:33,650 --> 00:16:36,800
‫To dobry sposób na potwierdzenie, że nasz ślad działa.

245
00:16:36,800 --> 00:16:42,650
‫Więc teraz, gdy wiemy, że to działa, możemy użyć tej lokalizacji, aby obrócić wieżę naszego czołgu.

246
00:16:42,980 --> 00:16:45,260
‫I zrobimy to w następnym filmie.

247
00:16:45,440 --> 00:16:46,520
‫Zobaczymy się wkrótce.

