﻿1
00:00:04,480 --> 00:00:05,230
‫Cześć i witaj.

2
00:00:05,230 --> 00:00:09,610
‫W tym wykładzie przedstawimy nową rzecz w drzewie zachowań, czyli usługi.

3
00:00:09,880 --> 00:00:14,530
‫Dowiemy się, czym są usługi, w jaki sposób pomagają nam w ciągłym działaniu i jak

4
00:00:14,530 --> 00:00:16,330
‫możemy napisać własne w C++.

5
00:00:16,330 --> 00:00:17,170
‫Zanurzmy się od razu.

6
00:00:18,150 --> 00:00:23,700
‫Teraz w naszym kontrolerze powietrza pozostało tylko kilka elementów logiki, których nie ma w naszym drzewie zachowań.

7
00:00:24,120 --> 00:00:26,940
‫Jednym z nich jest ustalenie miejsca startu.

8
00:00:26,970 --> 00:00:29,940
‫To jeszcze chcę ustawić tutaj ze sterownika powietrza.

9
00:00:30,600 --> 00:00:35,940
‫Ale takie rzeczy jak tik, teraz chciałbym zrobić z poziomu drzewa zachowań.

10
00:00:36,390 --> 00:00:38,070
‫Co chcę tutaj zrobić?

11
00:00:38,130 --> 00:00:39,690
‫Jak mam to zrobić.

12
00:00:39,720 --> 00:00:42,150
‫Aby dodać do naszej lokalizacji gracza.

13
00:00:42,150 --> 00:00:45,510
‫Aby zaktualizować ostatnią znaną lokalizację gracza.

14
00:00:46,260 --> 00:00:51,300
‫Obie te rzeczy możemy zrobić za pomocą czegoś, co nazywa się usługą projektową.

15
00:00:51,660 --> 00:00:55,950
‫Przejdźmy więc do naszych planów i zobaczmy, co się dzieje.

16
00:00:55,980 --> 00:01:03,030
‫Więc jeśli pójdę do mojego sojusznika i otworzę drzewo zachowań, porozmawiam o tym z głównym oknem, wtedy muszę ci pokazać, z

17
00:01:03,030 --> 00:01:05,040
‫jakich usług korzystaliśmy już wcześniej.

18
00:01:05,460 --> 00:01:14,190
‫I jest to zasadniczo sposób na prowadzenie czegoś za każdym razem lub co jakiś czas, gdy dana ścieżka jest

19
00:01:14,190 --> 00:01:14,730
‫aktywna.

20
00:01:14,760 --> 00:01:22,110
‫Więc gdybym miał tutaj usługę dotyczącą zachowania Chase, wtedy jakiś kod byłby w stanie działać przez cały czas, gdy zachowanie Chase

21
00:01:22,680 --> 00:01:26,850
‫jest aktywne, niezależnie od tego, czy poruszamy się, strzelamy, ważymy którąkolwiek z

22
00:01:26,850 --> 00:01:28,770
‫tych rzeczy, zawsze byłoby działanie.

23
00:01:28,770 --> 00:01:30,990
‫Ale jeśli jesteśmy w środku, zbadajmy, to nie będzie.

24
00:01:31,440 --> 00:01:35,520
‫To jest dokładnie taka sytuacja, w której chcemy skorzystać z usługi.

25
00:01:35,850 --> 00:01:38,020
‫Teraz zróbmy przykładową usługę.

26
00:01:38,040 --> 00:01:44,610
‫Jedną rzeczą, którą zauważamy podczas gry, jest to, że gdy powietrze znajdzie się w naszym zasięgu i zaczniemy

27
00:01:44,610 --> 00:01:51,440
‫się poruszać, on nie obraca się, by na nas spojrzeć i możemy to naprawić, korzystając z już wbudowanej usługi tutaj.

28
00:01:51,450 --> 00:01:58,540
‫Kliknij prawym przyciskiem myszy tę notatkę i przejdź do Dodaj usługę i poszukaj domyślnej usługi fokusu.

29
00:01:58,580 --> 00:01:59,970
‫Widać, że ma inny kolor, jest zielony.

30
00:02:00,480 --> 00:02:05,310
‫A jeśli wybierzemy tę domyślną usługę, przejdzie ona również pod węzły sekwencji, a nie nad

31
00:02:05,310 --> 00:02:06,630
‫nimi, co robią dekoratory.

32
00:02:07,440 --> 00:02:11,850
‫Po wybraniu domyślnego fokusa możesz wybrać, na czym chcesz się skupić.

33
00:02:11,850 --> 00:02:14,670
‫W tym przypadku chcemy skupić się na lokalizacji gracza.

34
00:02:15,390 --> 00:02:17,220
‫Śmiało i naciśnij Zapisz, naciśnij Odtwórz.

35
00:02:17,580 --> 00:02:23,070
‫A teraz, jeśli pójdziemy, rozejrzymy się i poruszymy, widać, że obraca się, by za nami podążać.

36
00:02:23,820 --> 00:02:24,540
‫Fajne rzeczy.

37
00:02:25,050 --> 00:02:32,100
‫Teraz chcemy móc zaimplementować podobną usługę w C++, która będzie aktualizować naszą lokalizację odtwarzacza

38
00:02:32,100 --> 00:02:38,760
‫przez cały czas i aktualizować naszą ostatnią znaną lokalizację odtwarzacza, gdy go ścigamy.

39
00:02:38,970 --> 00:02:41,670
‫Więc zrobimy to jako dwie oddzielne usługi.

40
00:02:41,670 --> 00:02:46,620
‫I możesz zobaczyć, jak to również automatycznie służy, ponieważ może sprawić, że rzeczy będą

41
00:02:46,620 --> 00:02:53,910
‫nieco bardziej wydajne niż robienie tego w technologii, ponieważ możesz uruchomić ostatnią znaną lokalizację gry tylko wtedy, gdy jesteś we właściwej części

42
00:02:53,910 --> 00:02:54,690
‫drzewa zachowań.

43
00:02:54,930 --> 00:02:58,110
‫Wróćmy więc do przeglądarki treści Sandbox.

44
00:02:58,110 --> 00:03:02,640
‫Dodaj nową nową klasę C++, która pokaże wszystkie klasy i poszukaj, jakie są tutaj nasze opcje.

45
00:03:03,120 --> 00:03:04,950
‫Szukamy lepszej obsługi.

46
00:03:04,950 --> 00:03:11,130
‫A potem jest kilka opcji, tak jak w przypadku B. T. Zadanie.

47
00:03:11,610 --> 00:03:15,900
‫Mamy Blackboard Base i będziemy potrzebować Blackboard Base, ponieważ chcemy

48
00:03:15,900 --> 00:03:18,150
‫wiedzieć, który klucz powinniśmy aktualizować.

49
00:03:18,150 --> 00:03:20,610
‫Na przykład, czy powinna to być lokalizacja gracza?

50
00:03:20,610 --> 00:03:22,950
‫Czy powinna to być ostatnia znana lokalizacja gracza?

51
00:03:23,460 --> 00:03:28,800
‫Więc pójdziemy i uderzymy dalej w tę z bazą Blackboard, wybierzmy

52
00:03:28,800 --> 00:03:36,240
‫ją i wywołamy tę usługę beta, podkreślimy lokalizację gracza i przejdźmy do tego, jak stworzyć tę klasę.

53
00:03:36,780 --> 00:03:42,960
‫Więc kiedy skończymy kompilację, przejdziemy do kodu Visual Studio i widać, że mamy tę

54
00:03:42,960 --> 00:03:48,300
‫lokalizację odtwarzacza usług BT, która dziedziczy po Service Blackwood Base Court.

55
00:03:48,330 --> 00:03:49,320
‫Właśnie tego teraz chcemy.

56
00:03:49,320 --> 00:03:51,630
‫Jaką funkcjonalność zamierzamy do tego przenieść?

57
00:03:52,140 --> 00:03:58,200
‫Cóż, zamierzam spróbować przenieść najprostszą możliwą funkcjonalność, czyli po prostu ustawić

58
00:03:58,800 --> 00:04:01,590
‫wartość ostatniej znanej lokalizacji gracza.

59
00:04:01,590 --> 00:04:08,310
‫Chociaż ten klawisz zostanie skonfigurowany w drzewie zachowania, nie tutaj w postaci zwykłego tekstu, ale będzie

60
00:04:08,310 --> 00:04:12,360
‫określał lokalizację gracza i ustawiał go na klawisz tablicy.

61
00:04:12,360 --> 00:04:17,580
‫I nie wykona żadnego z powodów sprawdzania linii wzroku, ponieważ uruchamiamy to w naszym drzewie

62
00:04:17,580 --> 00:04:21,900
‫zachowań, tylko wtedy, gdy gonimy, że nie potrzebujemy sprawdzania linii wzroku.

63
00:04:21,900 --> 00:04:25,230
‫Widzimy gracza, który automatycznie wiemy, że tak jest.

64
00:04:25,590 --> 00:04:28,770
‫A więc kolejne uproszczenie robienia tego w służbie.

65
00:04:29,610 --> 00:04:36,570
‫Więc powinno to być całkiem proste, jeśli wiemy, jak uzyskać wywołanie metody tutaj w usłudze BT.

66
00:04:37,320 --> 00:04:41,910
‫Więc chodźmy i spójrzmy na BT Service Dot, aby zobaczyć, co jest tam dostępne.

67
00:04:41,910 --> 00:04:43,890
‫Jaka jest dokumentacja, co możemy zrobić?

68
00:04:44,250 --> 00:04:50,730
‫Główne metody, które można tutaj zobaczyć, to stają się istotne w C, w węźle zaznaczenia i na początku

69
00:04:50,730 --> 00:04:51,090
‫wyszukiwania.

70
00:04:51,090 --> 00:04:51,960
‫Na początku wyszukiwania.

71
00:04:51,960 --> 00:04:54,180
‫Nie jesteśmy szczególnie zainteresowani, ale zauważ.

72
00:04:54,180 --> 00:05:00,630
‫Tak, właśnie tam będziemy przez cały czas otrzymywać aktualizacje, że ta usługa jest na aktywnej ścieżce.

73
00:05:01,170 --> 00:05:02,730
‫Więc to jest jeden, który będziemy chcieli wdrożyć.

74
00:05:03,030 --> 00:05:05,640
‫Przeszukujemy ten plik, aby znaleźć pełny podpis.

75
00:05:05,640 --> 00:05:07,950
‫Tutaj widzimy jest tutaj.

76
00:05:07,950 --> 00:05:09,240
‫Zobaczmy, w jakiej sekcji jest.

77
00:05:09,240 --> 00:05:10,530
‫Jest pod chronioną sekcją.

78
00:05:10,890 --> 00:05:16,620
‫Więc zamierzamy pokonać usługę, którą stworzyliśmy i stworzyć chronioną sekcję.

79
00:05:17,530 --> 00:05:24,160
‫I wklej, jest to automatycznie nadpisanie tutaj, ponieważ usługa BT sama dziedziczyła to po klasie nadrzędnej,

80
00:05:24,160 --> 00:05:27,400
‫ale nie zaszkodziło nam ponownie ją zastąpić.

81
00:05:27,790 --> 00:05:32,890
‫Możemy wykonać przesunięcie sterowania P, aby utworzyć implementację, a następnie wywołać super.

82
00:05:32,920 --> 00:05:39,220
‫Więc chcemy mieć super tick node i chcemy przekazać nasz własny comp i naszą pamięć węzła.

83
00:05:39,700 --> 00:05:41,410
‫Zobaczmy, jest tu kilka innych rzeczy.

84
00:05:41,440 --> 00:05:43,210
‫Mamy też sekundy delty.

85
00:05:43,210 --> 00:05:44,850
‫To też musimy pominąć.

86
00:05:44,860 --> 00:05:49,930
‫I na koniec zakończ z tym średnikiem, który powinien zniknąć z implementacji węzła kleszczowego.

87
00:05:49,960 --> 00:05:54,130
‫Teraz tutaj zasadniczo chcemy zrobić to zachowanie z kontrolera powietrza.

88
00:05:54,130 --> 00:05:59,410
‫CP, ten, w którym pobieramy element tablicy, a następnie ustawiamy wartość jako wektor.

89
00:05:59,710 --> 00:06:03,910
‫Cóż, wiemy, jak uzyskać komponenty tablicy z odniesień do komponentów właścicieli.

90
00:06:04,210 --> 00:06:05,370
‫Więc to całkiem proste.

91
00:06:05,380 --> 00:06:11,560
‫Zrobimy tylko kropkę komp właściciela, a następnie pobierzemy komponenty tablicy, pamiętając, że musimy dodać

92
00:06:11,560 --> 00:06:17,710
‫tutaj hash dla komponentu tablicy z ukośnikiem do przodu w drzewie zachowań.

93
00:06:18,100 --> 00:06:20,140
‫Następnie możemy użyć naszego operatora strzałki.

94
00:06:20,590 --> 00:06:27,310
‫Powinniśmy być w stanie tutaj po prostu ustawić wartość jako wektor i potrzebujemy klucza.

95
00:06:27,310 --> 00:06:30,460
‫Cóż, wiemy jak sobie z tym poradzić, ale odświeżmy sobie tylko pamięć.

96
00:06:30,460 --> 00:06:36,310
‫Jeśli przejdziemy do naszego serwisu BT podkreślenie Blackboard Base, widać to samo, co przy zadaniu,

97
00:06:36,310 --> 00:06:38,330
‫otrzymaliśmy wybrany klucz tablicy.

98
00:06:38,350 --> 00:06:39,070
‫Właśnie tego użyjemy.

99
00:06:39,400 --> 00:06:44,110
‫Pobierz wybrany Klucz tablicy pobiera klucz, który został wybrany w drzewie zachowań.

100
00:06:44,110 --> 00:06:48,520
‫A potem chcemy, aby nasza wartość wektora była dokładnie taka sama, jak w przypadku kontrolera powietrza.

101
00:06:48,520 --> 00:06:50,170
‫Zdobędziemy pulę graczy.

102
00:06:50,170 --> 00:06:55,690
‫A przede wszystkim, tutaj na górze, tam, musimy sprawdzić, czy to jest null.

103
00:06:55,690 --> 00:06:57,790
‫I musimy również uwzględnić statykę gry.

104
00:06:57,790 --> 00:07:00,130
‫Więc upewnijmy się, że mamy grę.

105
00:07:00,130 --> 00:07:05,920
‫Statyki obejmują z kontrolera powietrza, zachowaj w naszym odtwarzaczu lokalizację odtwarzacza usług.

106
00:07:06,880 --> 00:07:13,830
‫Następnie zrobimy i jeśli gracz -- jest równy wskaźnikowi null, to będziemy chcieli zrobić, to wrócić

107
00:07:13,830 --> 00:07:19,780
‫wcześniej, tutaj zwraca void, więc możemy po prostu zrobić szybki wczesny powrót.

108
00:07:20,200 --> 00:07:30,010
‫Następnie możemy użyć naszego odtwarzacza -- tutaj, aby po prostu uzyskać lokalizację aktora i być może będziemy musieli dodać tutaj.

109
00:07:30,010 --> 00:07:30,880
‫Zobaczymy, jak pójdziemy.

110
00:07:30,880 --> 00:07:34,360
‫Cóż, nie zaszkodzi być bezpiecznym, rób to i wyraźnie o tych rzeczach.

111
00:07:34,360 --> 00:07:40,230
‫Więc zrobimy włączenie do frameworka gry, a następnie ukośnik, który będzie -- kropka H, abyśmy mogli się upewnić, że

112
00:07:40,240 --> 00:07:45,340
‫mamy wszystko w porządku tutaj, a potem po prostu ustawiamy wartość jako powrót do tego

113
00:07:45,610 --> 00:07:47,320
‫powinien być wszystkim, czego potrzebujemy.

114
00:07:47,320 --> 00:07:49,120
‫Chodźmy skompilować i zobaczmy, czy to działa.

115
00:07:49,180 --> 00:07:50,290
‫Właściwie jeszcze jedna rzecz.

116
00:07:50,290 --> 00:07:54,640
‫Prawdopodobnie chcemy mieć ładną, ładną nazwę, więc powinniśmy mieć tutaj konstruktora.

117
00:07:54,670 --> 00:08:00,520
‫Utworzę więc sekcję publiczną z konstruktorem, który będzie nazwą klasy,

118
00:08:00,520 --> 00:08:03,730
‫a następnie stworzymy tę implementację.

119
00:08:03,730 --> 00:08:08,530
‫Zamierzam przenieść moją implementację powyżej implementacji dla węzła tickowego, a

120
00:08:08,530 --> 00:08:17,350
‫następnie ustawimy nazwę węzła równą jej, powinna to być aktualizacja lokalizacji odtwarzacza i zbudujmy i zobaczmy, czy to działa.

121
00:08:17,680 --> 00:08:19,240
‫Wygląda na to, że brakowało mi średnika.

122
00:08:19,240 --> 00:08:19,990
‫Spróbujmy jeszcze raz.

123
00:08:20,170 --> 00:08:25,810
‫Po pomyślnym skompilowaniu możemy przejść do naszego wroga i oprócz skupienia się na ustawieniach, chcę

124
00:08:25,810 --> 00:08:31,600
‫dodać nową usługę, którą pokazaliśmy tutaj jako lokalizację gracza, w której ładna nazwa w zasadzie

125
00:08:31,600 --> 00:08:34,570
‫pojawia się jako aktualizacja lokalizacji gry .

126
00:08:34,570 --> 00:08:40,660
‫Widać, że chce to powiedzieć, jak często zaznacza każdy punkt za 2. 6 sekund.

127
00:08:40,660 --> 00:08:43,930
‫To lepsze niż używanie ticka, ponieważ wiemy, że tick uruchamia tutaj każdą klatkę.

128
00:08:43,930 --> 00:08:46,630
‫To działa rzadziej, co jest dobrą rzeczą.

129
00:08:46,630 --> 00:08:52,390
‫Możemy przejść do szczegółów i utworzyć klawisz tablicy, rozwinąć i wybrać, że chcemy zaktualizować nie

130
00:08:52,390 --> 00:08:58,690
‫tylko lokalizację gry, ale także ostatnią znaną lokalizację gracza, ponieważ będzie się to działo w każdej

131
00:08:58,690 --> 00:09:02,620
‫klatce, dopóki gonimy, i to to zachowanie, którego chcemy.

132
00:09:02,830 --> 00:09:08,890
‫Więc jeszcze jeden węzeł usługi, który chcemy kontynuować i utworzyć, będzie wykonywał zachowanie kontrolerów.

133
00:09:08,890 --> 00:09:11,170
‫Zejdziemy na dół, żeby wziąć i zobaczyć, co zostało.

134
00:09:11,170 --> 00:09:17,470
‫W tym miejscu musimy zaktualizować lokalizację gracza, w zależności od tego, czy mamy linię wzroku.

135
00:09:17,470 --> 00:09:19,330
‫Chcemy więc zaktualizować lokalizację gry.

136
00:09:19,330 --> 00:09:22,240
‫Jeśli mamy takie linie, jak wyczyść lokalizację, jeśli nie.

137
00:09:22,540 --> 00:09:23,830
‫Więc to będzie nowa usługa.

138
00:09:23,830 --> 00:09:25,480
‫Zauważ, że to trochę inne zachowanie.

139
00:09:25,900 --> 00:09:28,240
‫Zamierzamy dodać nową, nową klasę C++.

140
00:09:28,240 --> 00:09:29,890
‫Idziemy pokazać wszystkie zajęcia.

141
00:09:29,890 --> 00:09:35,110
‫I znowu, będziemy podkreślać usługę Blackboard Base jako naszą klasę bazową i

142
00:09:35,110 --> 00:09:39,610
‫nazwiemy ją B. T. Podkreślenie usługi.

143
00:09:40,620 --> 00:09:43,700
‫Lokalizacja gracza, jeśli jest widoczna.

144
00:09:44,220 --> 00:09:46,830
‫I śmiało stwórz tę klasę.

145
00:09:46,950 --> 00:09:51,090
‫A ponieważ to wszystko, co najczęściej widziałeś wcześniej, Twoim wyzwaniem będzie wdrożenie tej

146
00:09:51,090 --> 00:09:51,690
‫usługi.

147
00:09:52,050 --> 00:09:57,540
‫Więc zamierzasz zaimplementować węzeł tikowy za pomocą kodu w kontrolerze powietrza.

148
00:09:57,540 --> 00:10:04,320
‫Jako przewodnik będziesz musiał zdobyć wskaźnik kontrolera powietrza z usługi BT.

149
00:10:04,320 --> 00:10:09,690
‫Teraz jest to dokładnie to samo, co zrobiliśmy w zadaniach rytmicznych, więc użyj tego jako wskazówki,

150
00:10:09,690 --> 00:10:11,130
‫aby uzyskać wskaźnik kontrolera.

151
00:10:11,640 --> 00:10:15,240
‫Będziesz potrzebować wskaźnika kontrolera powietrza, aby sprawdzić linię wzroku.

152
00:10:15,240 --> 00:10:21,060
‫Pamiętaj, że linia wzroku to metoda na kontrolerze lotu, a następnie musisz zaktualizować lub

153
00:10:21,060 --> 00:10:27,210
‫wyczyścić klucz w zależności od sprawdzenia linii wzroku, a następnie umieścić ten węzeł w drzewie zachowań.

154
00:10:27,210 --> 00:10:31,950
‫Jak myślisz, gdzie będzie odpowiedni poziom drzewa zachowań do uruchomienia tej usługi?

155
00:10:32,160 --> 00:10:36,840
‫Pomyśl o tym i podrap się pod brodą, zatrzymaj się, nagraj wideo i spróbuj.

156
00:10:38,040 --> 00:10:38,270
‫Dobra.

157
00:10:38,280 --> 00:10:38,790
‫Witamy spowrotem.

158
00:10:38,820 --> 00:10:44,400
‫To otworzyło nową usługę buraków w kodzie Visual Studio.

159
00:10:44,790 --> 00:10:48,360
‫Teraz będzie prawie identyczny w nagłówku.

160
00:10:48,900 --> 00:10:53,850
‫Więc zamierzam iść dalej i skopiować to do nowo wygenerowanego nagłówka.

161
00:10:54,390 --> 00:10:59,970
‫Wyjątkiem jest to, że musimy zmienić nazwę konstruktora, aby pasował.

162
00:11:00,450 --> 00:11:07,380
‫Teraz utworzymy implementację dla konstruktora i nadamy mu nazwę węzła, aby zaktualizować lokalizację odtwarzacza,

163
00:11:08,070 --> 00:11:10,170
‫jeśli zostanie wyświetlony.

164
00:11:10,920 --> 00:11:12,160
‫I dodaj średnik.

165
00:11:12,180 --> 00:11:12,630
‫Koniec tutaj.

166
00:11:12,680 --> 00:11:14,110
‫Nie zapominajmy o tym tym razem.

167
00:11:14,520 --> 00:11:16,290
‫Następnie wróć do C++.

168
00:11:16,290 --> 00:11:18,450
‫Zamierzam również zaimplementować węzeł kleszczowy.

169
00:11:18,840 --> 00:11:25,980
‫I zamierzam tylko skopiować, jeśli możemy znaleźć lokalizację gracza CP. I po prostu skopiować

170
00:11:25,980 --> 00:11:32,550
‫przez wywołanie do super i zdobycie pionka gracza i sprawdzenie zerowego zwrotu.

171
00:11:32,550 --> 00:11:35,880
‫W rzeczywistości skopiuję całe ciało i zmodyfikujemy je stamtąd.

172
00:11:36,630 --> 00:11:43,300
‫Więc kopiując to w poprzek, a także będziemy kopiować dostęp do komponentu tablicy z dołączeniem

173
00:11:43,300 --> 00:11:49,230
‫dla komponentu tablicy, statystyką gry i pionkiem, ponieważ potrzebujemy dostępu do tego

174
00:11:49,230 --> 00:11:49,860
‫wszystkiego.

175
00:11:50,130 --> 00:11:52,950
‫W rzeczywistości wiele funkcji jest tutaj udostępnianych.

176
00:11:53,220 --> 00:11:58,830
‫Mógłbyś pomyśleć o tym, żeby w jakiś sposób podzielili się tym kodem, ale myślę, że nie ma zbyt wielu duplikacji,

177
00:11:58,830 --> 00:12:00,090
‫abyśmy się wystarczająco przejmowali.

178
00:12:00,900 --> 00:12:05,400
‫Więc musimy tutaj również sprawdzić, czy mamy kontroler powietrza.

179
00:12:05,400 --> 00:12:15,210
‫Więc zamierzam zrobić, jeśli właściciel komponentów właściciel comp kropka otrzyma właściciela jest równy null pointer, wtedy będziemy chcieli iść

180
00:12:15,810 --> 00:12:19,170
‫dalej i wrócić na tym etapie.

181
00:12:19,980 --> 00:12:24,330
‫Następną rzeczą, którą będziemy chcieli zrobić, to sprawdzić naszą widoczność.

182
00:12:24,330 --> 00:12:31,890
‫Więc zrobimy, jeśli kropka porównania właściciela dostanie właściciela powietrza, a następnie zrobimy tutaj strzałkę i

183
00:12:31,890 --> 00:12:34,410
‫musimy dołączyć tutaj kontroler.

184
00:12:34,410 --> 00:12:36,600
‫Więc będzie to hasz.

185
00:12:38,150 --> 00:12:40,760
‫I to będzie ja kontroler.

186
00:12:40,790 --> 00:12:50,930
‫Więc h, potem chcemy zrobić linię i zobaczyć, jakie jest tutaj prawidłowe użycie, jeśli przejdziemy do kontrolera powietrza.

187
00:12:50,930 --> 00:12:59,060
‫CP Linia wzroku dwa jest tym, czego chcemy, więc linia wzroku do tego musimy zrobić linię wzroku do

188
00:12:59,060 --> 00:12:59,720
‫gry.

189
00:12:59,720 --> 00:13:00,980
‫W tym przypadku pionek.

190
00:13:00,980 --> 00:13:02,600
‫Czy mamy w polu widzenia pionka gracza?

191
00:13:03,290 --> 00:13:04,790
‫Czy to właśnie robimy w CPA?

192
00:13:04,790 --> 00:13:05,780
‫Sprawdźmy to jeszcze raz.

193
00:13:05,780 --> 00:13:06,440
‫Tak, jesteśmy.

194
00:13:07,250 --> 00:13:11,150
‫Następnie będziemy chcieli iść dalej i inaczej ustawić wartości.

195
00:13:11,660 --> 00:13:15,740
‫Ustawiamy więc wartość wektora na lokalizację aktora chwytającego pionek gracza.

196
00:13:15,740 --> 00:13:18,560
‫Tak, jeśli mamy inny zasięg widzenia.

197
00:13:18,560 --> 00:13:22,160
‫Jeśli nie mamy pola widzenia, wiemy, że musimy oczyścić tę wartość.

198
00:13:22,580 --> 00:13:25,790
‫Więc nadal będziemy dostawać składnik właścicielski, składnik tablicowy.

199
00:13:26,060 --> 00:13:31,580
‫Wtedy będzie to wartość wyczyść i nadal będziemy usuwać wartość wybranego

200
00:13:31,580 --> 00:13:37,700
‫klawisza tablicy, a to powinno w dużej mierze uchronić nas przed implementacją lokalizacji gracza.

201
00:13:37,700 --> 00:13:41,460
‫Jeśli widzisz, chodźmy i skompilujmy i zobaczmy, czy działa dobrze.

202
00:13:41,460 --> 00:13:42,650
‫Kompilacja się powiodła.

203
00:13:42,650 --> 00:13:44,540
‫Przejdźmy do drzewa zachowań.

204
00:13:44,570 --> 00:13:50,750
‫Teraz poziom, który chcę uruchomić, znajduje się w zasadzie na najwyższym poziomie w początkowym selektorze, ponieważ chcę, aby

205
00:13:50,750 --> 00:13:56,330
‫zasadniczo cały czas aktualizował lokalizację odtwarzacza, ponieważ musimy mieć możliwość przerwania dowolnego z tych innych

206
00:13:56,330 --> 00:13:59,330
‫zachowań w zależności od odtwarzacza lokalizacja jest ustawiana.

207
00:13:59,720 --> 00:14:02,570
‫Więc musimy mieć możliwość uzbrajania go w dowolnym momencie.

208
00:14:03,050 --> 00:14:08,630
‫Więc pójdę i kliknij prawym przyciskiem myszy selektor najwyższego poziomu i usługę w miejscu odtwarzania, jeśli widzisz.

209
00:14:09,290 --> 00:14:13,910
‫A potem wybierzemy ten węzeł serwisowy i wybierzemy jego klawisz tablicy, który będzie

210
00:14:13,910 --> 00:14:15,020
‫naszą lokalizacją gry.

211
00:14:15,740 --> 00:14:20,390
‫Aby jeden ustawiony w lokalizacji gry, lokalizacji odtwarzacza aktualizacji, bardziej głupi aktualizował

212
00:14:20,400 --> 00:14:21,980
‫ostatnią znaną lokalizację odtwarzacza.

213
00:14:22,640 --> 00:14:29,210
‫Powinniśmy teraz móc przejść do naszego kontrolera powietrza i zasadniczo usunąć cały ten kod

214
00:14:29,210 --> 00:14:33,500
‫w technologii, ponieważ został on zastąpiony przez nasze usługi.

215
00:14:33,830 --> 00:14:36,230
‫Możemy iść dalej, skompilować i zobaczyć, czy to zadziała.

216
00:14:36,320 --> 00:14:41,030
‫Przejdźmy do edytora, zagrajmy i zobaczmy, czy wciąż zbliża się do nas nasz wróg.

217
00:14:41,030 --> 00:14:46,520
‫Biegnie do nas, traci wzrok, potem wraca do nas, zaczyna strzelać.

218
00:14:46,520 --> 00:14:46,790
‫Tak.

219
00:14:46,790 --> 00:14:53,000
‫Zasadniczo wszystko działa tak jak wcześniej, z wyjątkiem tego, że teraz robi to całkowicie za pośrednictwem usług,

220
00:14:53,000 --> 00:14:55,520
‫które napisaliśmy dla siebie w C++.

221
00:14:55,820 --> 00:15:01,010
‫Na następnym wykładzie zamierzamy naprawić ten nieznośny błąd, w którym sztuczna inteligencja nadal strzela i

222
00:15:01,010 --> 00:15:02,990
‫ostatecznie udaje się jej zabić.

223
00:15:03,290 --> 00:15:03,950
‫Zobaczę to.

