﻿1
00:00:04,480 --> 00:00:05,530
‫Witamy spowrotem.

2
00:00:05,560 --> 00:00:08,760
‫Teraz w tym filmie porozmawiamy o hitowych wydarzeniach.

3
00:00:08,770 --> 00:00:15,430
‫Chcielibyśmy wykryć, kiedy pocisk w coś trafi i w ten sposób możemy coś zrobić w

4
00:00:15,430 --> 00:00:17,560
‫odpowiedzi, np. zniszczyć pocisk.

5
00:00:17,560 --> 00:00:22,710
‫A później zajmiemy się zadawaniem obrażeń i powodowaniem efektów eksplozji i tym podobnych.

6
00:00:22,720 --> 00:00:26,350
‫Porozmawiajmy teraz trochę o hitowych wydarzeniach.

7
00:00:26,350 --> 00:00:29,440
‫Nasz pocisk ma element siatkowy.

8
00:00:29,440 --> 00:00:37,450
‫Jego typ to ty statyczny komponent siatkowy, a ty statyczny komponent siatkowy to jedna klasa w długiej hierarchii

9
00:00:37,450 --> 00:00:43,990
‫klas, a nierzeczywisty system silnika jednym z jego rodziców to ty prymitywny komponent.

10
00:00:44,260 --> 00:00:48,100
‫Oto strona z dokumentacją dla twojego prymitywnego komponentu.

11
00:00:48,130 --> 00:00:54,910
‫Mówi, że prymitywne komponenty są postrzegane jako komponenty, które zawierają lub generują pewien rodzaj geometrii, która jest

12
00:00:54,910 --> 00:00:58,600
‫ogólnie renderowana lub używana jako dane o kolizji.

13
00:00:58,600 --> 00:01:02,560
‫Są więc w zasadzie komponentami sceny z kilkoma dodatkowymi funkcjami.

14
00:01:02,560 --> 00:01:08,440
‫A jeśli przewiniesz w dół i spojrzysz na hierarchię, zobaczysz, że widzieliśmy komponent i

15
00:01:08,440 --> 00:01:15,100
‫pochodzę od tego pierwotnego komponentu, i możesz przewijać w dół i zobaczyć wszystkie inne klasy, które

16
00:01:15,100 --> 00:01:16,510
‫pochodzą od ciebie.

17
00:01:16,510 --> 00:01:17,860
‫Składnik pierwotny.

18
00:01:18,250 --> 00:01:24,280
‫Powodem, dla którego to podkreślamy, jest to, że statyczny komponent siatki dziedziczy

19
00:01:24,280 --> 00:01:30,820
‫te cechy z twojego podstawowego komponentu, a ty prymitywny komponent ma możliwość generowania zdarzeń trafień.

20
00:01:30,850 --> 00:01:33,670
‫Co rozumiemy przez generowanie zdarzeń trafień?

21
00:01:33,760 --> 00:01:39,310
‫Cóż, powiedzmy, że mamy w naszym świecie pewną geometrię reprezentowaną przez prostokąt po

22
00:01:39,310 --> 00:01:45,160
‫prawej stronie i mamy obiekt ze statyczną siatką reprezentowaną przez okrąg po lewej stronie.

23
00:01:45,190 --> 00:01:52,660
‫Teraz, jeśli ten obiekt, który ma statyczny komponent siatki, porusza się w kierunku bloku, to jeśli ten komponent jest

24
00:01:52,660 --> 00:01:58,630
‫skonfigurowany do obsługi zdarzeń trafień, to jak tylko trafi w ten blok, zdarzenie trafienia zostanie wygenerowane

25
00:01:58,630 --> 00:01:59,800
‫po kolizji.

26
00:01:59,800 --> 00:02:06,040
‫Teraz zdarzenie trafienia wygeneruje pewne dane dotyczące tej kolizji, w tym komponent, który został

27
00:02:06,040 --> 00:02:06,640
‫trafiony.

28
00:02:06,640 --> 00:02:09,640
‫Więc ten blok tutaj może mieć statyczny komponent siatki.

29
00:02:09,640 --> 00:02:12,910
‫Możemy uzyskać dostęp do tego komponentu po kolizji.

30
00:02:12,910 --> 00:02:19,120
‫Możemy również uzyskać dostęp do aktora, który został trafiony, a zdarzenie głowy również generuje wynik trafienia EF.

31
00:02:19,120 --> 00:02:25,090
‫Dowiedzieliśmy się trochę o wyniku trafienia F i wiemy, że zawiera on wiele zmiennych dotyczących

32
00:02:25,090 --> 00:02:30,790
‫zdarzenia trafienia, takich jak lokalizacja trafienia, która jest wektorem F reprezentującym lokalizację na świecie.

33
00:02:31,090 --> 00:02:33,460
‫Więc mamy naszą siatkę pocisków.

34
00:02:33,460 --> 00:02:37,690
‫Jest to zmienna typu statycznego wskaźnika komponentu siatki.

35
00:02:37,690 --> 00:02:43,000
‫Teraz, gdy ten statyczny komponent siatki uderza w coś na świecie, chcemy mieć jakiś kod, który

36
00:02:43,000 --> 00:02:44,380
‫na to zareaguje.

37
00:02:44,380 --> 00:02:50,740
‫Teraz będąc statycznym komponentem siatki, dziedziczy rzeczy z twojej pierwotnej klasy komponentów.

38
00:02:50,740 --> 00:02:55,450
‫Jedną z rzeczy, które dziedziczy, jest zmienna wywoływana po trafieniu komponentu.

39
00:02:55,480 --> 00:02:58,750
‫Oto dokumentacja dotycząca trafienia komponentu.

40
00:02:58,750 --> 00:03:05,320
‫Jest to opisane jako zdarzenie o nazwie Kiedy komponent uderza lub zostaje uderzony przez coś stałego.

41
00:03:05,320 --> 00:03:11,680
‫Teraz przewijając w dół, widzimy, że po trafieniu komponentu ma sygnaturę trafienia komponentu typu F.

42
00:03:11,680 --> 00:03:17,770
‫A jeśli to klikniemy, zobaczymy, że sygnatura trafienia komponentu F jest strukturą.

43
00:03:17,800 --> 00:03:24,100
‫Wracając, widzimy, że dokumentacja mówi o zdarzeniu wywoływanym, gdy komponent uderza lub zostaje uderzony

44
00:03:24,100 --> 00:03:25,660
‫przez coś stałego.

45
00:03:25,660 --> 00:03:32,140
‫Może się to zdarzyć z powodu takich rzeczy, jak ruch postaci przy użyciu ustawionej lokalizacji z włączonym przemiataniem

46
00:03:32,140 --> 00:03:38,920
‫lub symulacja fizyki dla zdarzeń, w których obiekty nakładają się, takie jak wejście w wyzwalacz, zobacz zdarzenie nakładania się.

47
00:03:38,920 --> 00:03:42,280
‫Są więc zdarzenia hitowe i zdarzenia nakładające się.

48
00:03:42,280 --> 00:03:44,230
‫Interesują nas hity.

49
00:03:44,470 --> 00:03:51,700
‫Wiemy więc, że trafienie w komponencie jest opisane w dokumentacji jako zdarzenie trafienia i wiemy, że

50
00:03:51,700 --> 00:03:56,410
‫trafienie w komponencie jest strukturą typu F sygnatury trafienia komponentu.

51
00:03:56,410 --> 00:03:57,550
‫Na razie w porządku.

52
00:03:57,550 --> 00:04:04,930
‫Teraz to zdarzenie trafienia po trafieniu komponentu jest również czymś, co nazywamy delegatem multiemisji.

53
00:04:04,960 --> 00:04:10,270
‫Delegat multiemisji może mieć powiązanych z nim wiele funkcji.

54
00:04:10,300 --> 00:04:14,200
‫Mogą istnieć funkcje, które istnieją w wielu klasach.

55
00:04:14,200 --> 00:04:20,980
‫A jeśli te funkcje zostaną powiązane z delegatem multiemisji, zostaną dodane do czegoś, co nazywa

56
00:04:20,980 --> 00:04:22,600
‫się listą wywołań.

57
00:04:22,600 --> 00:04:29,650
‫To jest lista funkcji, które mają zostać wywołane, gdy zdarzenie trafienia mówi im, że mają zostać wywołane.

58
00:04:29,650 --> 00:04:35,500
‫Mówimy, że to zdarzenie trafienia lub delegat multiemisji jest emitowane, gdy coś się dzieje.

59
00:04:35,500 --> 00:04:43,000
‫Tak więc w przypadku, gdy nasza siatka pocisków w coś trafi, delegat będzie rozgłaszał do wszystkich klas,

60
00:04:43,000 --> 00:04:46,660
‫które mają funkcję powiązaną z tym delegatem.

61
00:04:46,690 --> 00:04:53,440
‫Natychmiast po wysłaniu tej emisji wszystkie te powiązane funkcje są wywoływane w odpowiedzi na tę

62
00:04:53,440 --> 00:04:54,370
‫emisję.

63
00:04:54,370 --> 00:04:57,580
‫To bardzo potężna funkcja Unreal Engine.

64
00:04:57,580 --> 00:05:03,610
‫Pozwala nam to mieć to coś, co nazywa się delegatem, który czeka na zdarzenie, takie jak kolizja.

65
00:05:03,610 --> 00:05:03,970
‫I wtedy.

66
00:05:04,100 --> 00:05:11,270
‫A delegat zostanie rozgłoszony, w wyniku czego wszystkie powiązane funkcje będą wywoływane w odpowiedzi na rozgłoszenie.

67
00:05:11,270 --> 00:05:15,930
‫Ponieważ wiele funkcji może być powiązanych z tym delikatnym, nazywamy to multiemisją.

68
00:05:15,950 --> 00:05:21,090
‫Emituje do wielu klas, które mają przypisane do niego swoje funkcje.

69
00:05:21,110 --> 00:05:24,460
‫Jak powiązać funkcję z tym delegatem?

70
00:05:24,470 --> 00:05:30,350
‫Cóż, przy trafieniu komponentu jest kilka funkcji, które pozwalają nam to zrobić, z których jedna nazywa

71
00:05:30,350 --> 00:05:31,720
‫się dodawanie dynamiczne.

72
00:05:31,730 --> 00:05:38,930
‫Więc kiedy wywołujemy dynamiczną funkcję ADD, wszystko, co musimy zrobić, to przekazać w dwóch parametrach obiekt użytkownika, do

73
00:05:38,930 --> 00:05:45,260
‫którego możemy to wykorzystać, oraz funkcję wywołania zwrotnego, która jest adresem jakiejś funkcji w naszej

74
00:05:45,260 --> 00:05:46,000
‫klasie.

75
00:05:46,010 --> 00:05:52,790
‫Kiedy więc uzyskamy dostęp do tego w delegatze trafienia komponentu i wywołamy funkcję dynamiczną add, możemy przekazać obiekt

76
00:05:52,820 --> 00:05:54,770
‫użytkownika i wywołanie zwrotne.

77
00:05:54,770 --> 00:06:00,140
‫A to spowoduje dodanie tego wywołania zwrotnego do listy wywołań zdarzeń trafień.

78
00:06:00,170 --> 00:06:07,280
‫Teraz po trafieniu komponentu rozgłosimy ten delegat, w wyniku czego zostaną wywołane wszystkie powiązane z nim funkcje.

79
00:06:07,280 --> 00:06:12,290
‫Aby więc powiązać się z tym delegatem, musimy utworzyć funkcję zwrotną.

80
00:06:12,470 --> 00:06:18,290
‫Oto pocisk i chcielibyśmy funkcji zwrotnej dla zdarzenia trafienia.

81
00:06:18,290 --> 00:06:23,090
‫Więc stwórzmy tutaj prywatną funkcję, która będzie nieważna.

82
00:06:23,150 --> 00:06:25,480
‫I zamierzam po prostu nazwać to na hit.

83
00:06:25,490 --> 00:06:30,820
‫Moglibyśmy to nazwać jak tylko chcemy, ale wydaje się to wystarczająco opisowe.

84
00:06:30,830 --> 00:06:36,890
‫Teraz ta funkcja zwrotna musi mieć poprawną sygnaturę dla zdarzeń trafień, co oznacza, że

85
00:06:36,890 --> 00:06:40,460
‫jej lista parametrów wejściowych musi być bardzo szczegółowa.

86
00:06:40,460 --> 00:06:49,870
‫Pierwszy parametr wejściowy musi być typu „wskaźnik podstawowego komponentu” i nazywa się hit comp.

87
00:06:49,880 --> 00:06:52,160
‫To jest składnik, który uderza.

88
00:06:52,160 --> 00:06:56,170
‫W naszym przypadku nasza siatka pocisków będzie uderzać w różne rzeczy.

89
00:06:56,180 --> 00:07:02,240
‫Następnym parametrem jest wskaźnik aktora o nazwie Inny aktor.

90
00:07:02,540 --> 00:07:05,690
‫To będzie aktor, który został trafiony.

91
00:07:05,720 --> 00:07:12,950
‫Następnym parametrem wejściowym jest kolejny wskaźnik do podstawowego komponentu o nazwie other comp.

92
00:07:12,980 --> 00:07:15,590
‫To kolejny składnik, który został trafiony.

93
00:07:15,590 --> 00:07:21,410
‫Więc jeśli trafimy na składnik siatki statycznej innego aktora, to będzie to składnik siatki statycznej.

94
00:07:21,410 --> 00:07:25,760
‫Następny jest wektor F zwany impulsem normalnym.

95
00:07:25,820 --> 00:07:32,000
‫Jeśli symulujemy fizykę, silnik fizyki zastosuje impuls w odpowiedzi na zderzenie.

96
00:07:32,000 --> 00:07:37,510
‫A ten wektor f reprezentuje kierunek i wielkość tego impulsu.

97
00:07:37,520 --> 00:07:46,130
‫I na koniec mamy parametr wejściowy typu const F hit result i jest to stała referencja i nazywa

98
00:07:46,130 --> 00:07:47,450
‫się hit.

99
00:07:47,450 --> 00:07:53,780
‫Tak więc, gdy zostanie wywołane przy trafieniu, będziemy mieć dostęp do wyniku trafienia, który zawiera jeszcze więcej informacji o

100
00:07:53,780 --> 00:07:54,380
‫trafieniu.

101
00:07:54,410 --> 00:07:59,150
‫Teraz, ponieważ wiążemy to z delegatem, musi to być funkcja U.

102
00:07:59,150 --> 00:08:01,940
‫Więc oznaczymy to Twoją funkcją.

103
00:08:01,940 --> 00:08:03,800
‫Teraz powinieneś znać swoją funkcję.

104
00:08:03,800 --> 00:08:08,390
‫To tak jak ty, tylko dla funkcji, a nie zmiennych.

105
00:08:08,390 --> 00:08:09,590
‫Tak bardzo ważne.

106
00:08:09,590 --> 00:08:12,890
‫Aby to zadziałało, nasze wywołanie zwrotne musi być funkcją u.

107
00:08:12,890 --> 00:08:14,600
‫Teraz zadeklarowaliśmy funkcję.

108
00:08:14,600 --> 00:08:17,330
‫Przejdźmy dalej i zdefiniujmy funkcję.

109
00:08:17,570 --> 00:08:19,090
‫Więc z powrotem w pociskach.

110
00:08:19,160 --> 00:08:24,410
‫CP Tuż pod naszą funkcją tick, zdefiniujmy tę funkcję.

111
00:08:24,410 --> 00:08:31,100
‫Damy jej treść funkcji i umieścimy nazwę klasy tuż przed nazwą funkcji, a teraz mamy

112
00:08:31,100 --> 00:08:32,240
‫funkcję zwrotną.

113
00:08:32,510 --> 00:08:39,230
‫Jesteśmy więc gotowi, aby powiązać tę funkcję przy trafieniu z naszym delegatem i musimy to zrobić na początku gry.

114
00:08:39,260 --> 00:08:44,450
‫Robienie tego w konstruktorze jest zbyt wcześnie i czasami możesz napotkać problemy, takie jak brak

115
00:08:44,450 --> 00:08:45,380
‫powiązania delegata.

116
00:08:45,380 --> 00:08:47,330
‫Więc zrobimy to tutaj i zaczniemy grać.

117
00:08:47,330 --> 00:08:55,460
‫Mamy więc naszą siatkę pocisków i użyjemy operatora strzałki, aby uzyskać dostęp do zmiennej odziedziczonej po tobie.

118
00:08:55,460 --> 00:09:03,470
‫Komponent prymitywny wywoływany przy trafieniu komponentu i przy trafieniu komponentu ma funkcję add dynamic.

119
00:09:03,470 --> 00:09:08,300
‫Co dziwne, autouzupełnianie nie zadziała w przypadku dodawania dynamiki, więc będziesz musiał wpisać

120
00:09:08,300 --> 00:09:09,740
‫całą nazwę funkcji.

121
00:09:09,740 --> 00:09:17,000
‫Jest to funkcja, której użyjemy, aby powiązać nasze wywołanie zwrotne po trafieniu komponentu i dodać tę funkcję

122
00:09:17,000 --> 00:09:18,410
‫do listy wywołań.

123
00:09:18,410 --> 00:09:23,960
‫Teraz najpierw potrzebujemy obiektu użytkownika, który będzie tym, ponieważ jest to klasa, w

124
00:09:23,960 --> 00:09:30,290
‫której przywiązujemy funkcję do, a następnie potrzebujemy adresu do funkcji, która będzie adresem przy trafieniu.

125
00:09:30,290 --> 00:09:35,720
‫Użyjemy więc adresu operatora i funkcji pocisk przy trafieniu.

126
00:09:35,720 --> 00:09:41,180
‫Dzięki temu mamy powiązaną naszą funkcję i jesteśmy gotowi do generowania zdarzeń trafień.

127
00:09:41,420 --> 00:09:47,150
‫Teraz możemy to przetestować za pomocą dziennika UEE i możemy użyć ostrzeżenia dziennika temp.

128
00:09:48,550 --> 00:09:52,120
‫A za tekst możemy po prostu powiedzieć na trafienie.

129
00:09:52,270 --> 00:09:58,090
‫A jeśli widzimy to w dzienniku wyjściowym, wiemy, że nasza funkcja przy trafieniu została wywołana, skompilujmy

130
00:09:58,090 --> 00:09:58,570
‫to.

131
00:09:59,020 --> 00:10:01,270
‫Więc mam otwarty dziennik wyjściowy.

132
00:10:01,270 --> 00:10:08,440
‫Zamierzam nacisnąć play i wystrzelić pocisk, a przy trafieniu pojawi się moja wiadomość w dzienniku.

133
00:10:08,440 --> 00:10:09,730
‫Więc to działa.

134
00:10:10,450 --> 00:10:17,230
‫Teraz tylko na marginesie, jeśli przejdziemy do pocisku BP i wybierzemy siatkę pocisku w panelu szczegółów, możemy

135
00:10:17,230 --> 00:10:19,900
‫przewinąć w dół do sekcji kolizji.

136
00:10:20,080 --> 00:10:26,290
‫I tutaj widzimy, że ustawienia kolizji są ustawione tak, aby blokować całą dynamikę, a włączona kolizja jest

137
00:10:26,290 --> 00:10:30,760
‫ustawiona na to ustawienie, w którym włączone są kolizje i fizyka.

138
00:10:30,760 --> 00:10:33,280
‫Jest to konieczne w przypadku hitów.

139
00:10:33,280 --> 00:10:36,700
‫Musimy mieć możliwość zapytania o zdarzenie trafienia.

140
00:10:36,700 --> 00:10:41,800
‫I oczywiście fizyka pozwala silnikowi fizyki działać na siatkę pocisku.

141
00:10:41,800 --> 00:10:48,700
‫Więc teraz, gdy powiązaliśmy się z delegatem on składnik hit z naszą funkcją on hit i umieściliśmy ogromny

142
00:10:48,700 --> 00:10:55,000
‫dziennik, aby upewnić się, że działa, chciałbym, abyś zbadał tę funkcję trochę bardziej, abyśmy mogli zrozumieć

143
00:10:55,000 --> 00:10:59,440
‫niektóre z tych parametrów wejściowych w naszej funkcji przy trafieniu.

144
00:10:59,440 --> 00:11:03,160
‫Tak więc w funkcji przy trafieniu dodaj więcej dzienników YOUI.

145
00:11:03,160 --> 00:11:08,980
‫Chciałbym, abyś wydrukował nazwy niektórych z tych parametrów wejściowych za pomocą funkcji git name.

146
00:11:08,980 --> 00:11:15,970
‫Chciałbym, abyś użył dziennika YUI do wydrukowania nazwy hitu kompozycji, innego aktora i innej kompozycji, abyśmy mogli

147
00:11:15,970 --> 00:11:18,340
‫zobaczyć nazwy obiektów, które uderzamy.

148
00:11:18,340 --> 00:11:23,770
‫Będziesz używać formatu procent se, określ w makrze tekstowym dziennika E.

149
00:11:23,770 --> 00:11:30,700
‫I tak dla przypomnienia, za każdym razem, gdy wywołujemy get name, musimy użyć gwiazdki podczas przekazywania tego ciągu do

150
00:11:30,700 --> 00:11:36,880
‫makra dziennika YUI, na przykład, aby uzyskać nazwę innego aktora, którego nazwiemy innego aktora, pobierzemy nazwę i

151
00:11:36,880 --> 00:11:42,590
‫wstawimy tę gwiazdkę na początku tylko po to, aby zwrócić ciąg w stylu C, którego oczekuje

152
00:11:42,670 --> 00:11:45,550
‫log, gdy sformatujesz go za pomocą ciągu.

153
00:11:45,550 --> 00:11:52,330
‫Zatrzymaj więc wideo i użyj Yui zaloguj się w naszej funkcji przy trafieniu, aby wydrukować teraz nazwy hitowej kompozycji, innego

154
00:11:52,330 --> 00:11:53,890
‫aktora i innej kompozycji.

155
00:11:57,740 --> 00:11:58,040
‫Dobra.

156
00:11:58,040 --> 00:12:02,570
‫Więc tutaj, w pocisku CP, użyję tutaj twojego dziennika.

157
00:12:02,720 --> 00:12:10,610
‫Skopiuję więc ten wiersz, w którym używam dziennika Yui, a dla ciągu napiszę hit comp procent s

158
00:12:11,270 --> 00:12:20,000
‫i zaraz po tekście nazwę hit comp get name i potrzebuję tej gwiazdki do konwersji z ciągu F

159
00:12:20,000 --> 00:12:22,910
‫na ciąg w stylu C.

160
00:12:22,910 --> 00:12:29,330
‫Teraz użyję tej samej linijki, tylko zmienię tekst na inny aktor i tym

161
00:12:29,330 --> 00:12:32,480
‫razem nazwiemy go imieniem innego aktora.

162
00:12:32,600 --> 00:12:39,950
‫I na koniec, wydrukuję inne połączenie komputerowe, zdobędę nazwę na innym komputerze.

163
00:12:40,130 --> 00:12:46,250
‫Więc skompilujmy i wróćmy tutaj w edytorze, zamierzam iść dalej, wcisnąć Odtwórz, wystrzelić pocisk

164
00:12:46,250 --> 00:12:47,630
‫i to sprawdzę.

165
00:12:47,660 --> 00:12:50,780
‫Widzimy, że trafienie to siatka pocisków.

166
00:12:50,780 --> 00:12:56,180
‫Pamiętaj, że powiedzieliśmy, że to jest komponent wykonujący uderzenie, czyli nasz pocisk

167
00:12:56,180 --> 00:13:01,940
‫pociskowy, a zobaczysz, że używa nazwy, którą przypisaliśmy temu komponentowi podczas tworzenia domyślnego podobiektu.

168
00:13:01,940 --> 00:13:05,570
‫Jest to więc jedna z tych sytuacji, w których używa się tej nazwy.

169
00:13:05,570 --> 00:13:09,830
‫Teraz zobaczysz, że jest napisane, że inna wada aktora podkreśla zero.

170
00:13:09,830 --> 00:13:16,130
‫A to dlatego, że ten statyczny aktor siatki, który jest wadą, ma nazwę wada podkreślona przez zero.

171
00:13:16,130 --> 00:13:22,160
‫Czasami silnik umieszcza liczbę na końcu swojej wewnętrznej nazwy dla aktorów i komponentów, i

172
00:13:22,160 --> 00:13:26,630
‫zobaczysz, że to samo dzieje się, gdy wypisujemy inną kompozycję.

173
00:13:26,630 --> 00:13:33,110
‫Aktor siatki statycznej z wadami ma składnik siatki statycznej, a jego nazwa to zero składnika siatki statycznej.

174
00:13:33,110 --> 00:13:40,610
‫To daje nam trochę więcej informacji o tych parametrach wejściowych w naszej funkcji zwrotnej przy trafieniu.

175
00:13:40,610 --> 00:13:47,600
‫Jest to przydatne, ponieważ mamy dostęp do tych obiektów w C++, jeśli chcielibyśmy coś zrobić w odpowiedzi na

176
00:13:47,600 --> 00:13:48,620
‫zdarzenie trafienia.

177
00:13:48,800 --> 00:13:56,210
‫Podsumowując, dowiedzieliśmy się o zdarzeniach trafień i ich implementacji jako delegatów multiemisji, a także dowiedzieliśmy się,

178
00:13:56,210 --> 00:13:57,650
‫jak one działają.

179
00:13:57,650 --> 00:14:05,030
‫Stworzyliśmy funkcję o nazwie On Hit and Bound, która jest funkcją delegata po trafieniu komponentu, który

180
00:14:05,030 --> 00:14:09,620
‫nasza siatka pocisków odziedziczyła po Twojej klasie podstawowego komponentu.

181
00:14:09,620 --> 00:14:15,920
‫Teraz nie zniszczyliśmy pocisku przy trafieniu, ale teraz wiemy, że możemy to łatwo zrobić, ponieważ mamy

182
00:14:15,920 --> 00:14:21,860
‫tę funkcję zwrotną i możemy umieścić w tej funkcji logikę, taką jak zniszczenie pocisku.

183
00:14:21,860 --> 00:14:24,080
‫Zajmiemy się tym w przyszłym filmie.

184
00:14:24,080 --> 00:14:30,800
‫Na razie poklep się po plecach, ponieważ jest to jeden z bardziej złożonych obszarów Unreal Engine C++, których do

185
00:14:30,800 --> 00:14:32,270
‫tej pory się nauczyłeś.

186
00:14:32,480 --> 00:14:33,890
‫Do zobaczenia w następnym filmie.

