﻿1
00:00:04,080 --> 00:00:05,890
‫Witam ponownie.

2
00:00:05,910 --> 00:00:11,990
‫Teraz poruszamy się naszym czołgiem do przodu i do tyłu, ale nie mamy możliwości sterowania czołgiem.

3
00:00:12,000 --> 00:00:18,260
‫W tym filmie będziemy pracować nad obracaniem zbiornika za pomocą czegoś, co nazywa się rotacją lokalną.

4
00:00:18,270 --> 00:00:23,040
‫Jest to analog obrotowy do dodania lokalnego przesunięcia aktora.

5
00:00:23,070 --> 00:00:29,850
‫Teraz dodanie lokalnego przesunięcia aktora miało wiele parametrów wejściowych i przekazaliśmy tylko pierwszy z nich, ponieważ pozostałe

6
00:00:29,850 --> 00:00:31,470
‫trzy były opcjonalne.

7
00:00:31,650 --> 00:00:35,010
‫Ale jedna z tych trzech pozostałych dotyczyła zamiatania.

8
00:00:35,010 --> 00:00:41,190
‫Przedyskutujemy trochę o zamiataniu, zanim będziemy kontynuować wdrażanie rotacji.

9
00:00:41,190 --> 00:00:45,660
‫Więc wróciłem do dokumentacji dla ADD Aktor Local Offset.

10
00:00:45,660 --> 00:00:48,720
‫Przyjrzyjmy się więc jeszcze raz tym parametrom wejściowym.

11
00:00:48,750 --> 00:00:52,770
‫Drugi nazywa się B Sweep i jest boolowski.

12
00:00:53,160 --> 00:00:59,790
‫Teraz, jeśli przewiniemy trochę w dół i przeczytamy informacje tutaj o przemiataniu B, powiemy, czy

13
00:00:59,790 --> 00:01:07,140
‫przesuwamy się do lokalizacji docelowej, wyzwalając nakładanie się po drodze i zatrzymując się przed celem, jeśli

14
00:01:07,140 --> 00:01:08,820
‫coś zostanie zablokowane.

15
00:01:09,180 --> 00:01:14,790
‫Mówi również, że tylko komponent główny jest przemiatany i sprawdzany pod kątem kolizji blokujących.

16
00:01:14,790 --> 00:01:17,430
‫Komponenty podrzędne poruszają się bez przeciągania.

17
00:01:17,700 --> 00:01:20,820
‫Jeśli kolizja jest wyłączona, nie ma to wpływu.

18
00:01:21,060 --> 00:01:28,440
‫Porozmawiajmy więc o tym, co to teraz oznacza w programowaniu gier, zamiatanie jest techniką wykonywaną przez silnik, o

19
00:01:28,440 --> 00:01:30,390
‫ile włączone jest zamiatanie.

20
00:01:30,570 --> 00:01:38,370
‫Jeśli mamy poruszający się obiekt, taki jak sfera reprezentowana przez ten okrąg, każda klatka, gdy ta

21
00:01:38,370 --> 00:01:42,090
‫sfera się porusza, silnik przeprowadza kontrolę przemiatania.

22
00:01:42,090 --> 00:01:49,740
‫Oznacza to, że sprawdza, czy ten ruch dla tej konkretnej klatki spowodowałby nakładanie się

23
00:01:49,740 --> 00:01:51,420
‫dwóch obiektów.

24
00:01:51,630 --> 00:01:55,560
‫Więc mam ten blok tutaj reprezentowany przez ten prostokąt.

25
00:01:56,010 --> 00:01:59,580
‫Zastanówmy się teraz nad tym, że są to jedyne dwa obiekty na świecie.

26
00:01:59,580 --> 00:02:06,600
‫Tak więc, gdy przesuwanie jest włączone, gdy kula zbliża się do obiektu, silnik sprawdza, czy te

27
00:02:06,600 --> 00:02:09,330
‫dwa obiekty nakładają się na siebie.

28
00:02:09,570 --> 00:02:16,410
‫Teraz, gdy kula nadal się porusza, załóżmy, że podczas jednej z tych klatek kula przesunęłaby się

29
00:02:16,410 --> 00:02:19,500
‫tak, że nachodziła na inny obiekt.

30
00:02:19,500 --> 00:02:26,760
‫Teraz włączone przemiatanie silnik wykryje to nakładanie się i przesunie tę sferę z powrotem

31
00:02:26,790 --> 00:02:31,920
‫dla tej konkretnej klatki, aby nigdy nie penetrowała obiektu.

32
00:02:31,950 --> 00:02:35,460
‫Teraz tak naprawdę nigdy nie widzimy, jak sfera penetruje obiekt.

33
00:02:35,490 --> 00:02:40,530
‫Silnik łapie, które nakładają się, zanim ruch zostanie faktycznie zrealizowany.

34
00:02:40,530 --> 00:02:46,020
‫W rezultacie widzimy, że kula przestaje się nakładać.

35
00:02:46,020 --> 00:02:52,710
‫Więc gdyby ten prostokąt był na przykład ścianą, kula zatrzymałaby się na powierzchni ściany.

36
00:02:52,710 --> 00:02:55,170
‫To właśnie dla nas osiąga zamiatanie.

37
00:02:55,170 --> 00:03:00,030
‫Teraz dokumentacja mówi, że jeśli kolizja jest wyłączona, nie ma to żadnego efektu.

38
00:03:00,030 --> 00:03:04,590
‫Więc kolizja musi być włączona, aby zamiatanie działało.

39
00:03:04,740 --> 00:03:12,090
‫Wracając do zbiorników CP w funkcji move, oto nasze wywołanie, aby dodać lokalne przesunięcie aktora i jeśli

40
00:03:12,120 --> 00:03:19,110
‫chcemy, możemy przekazać tutaj inny parametr wejściowy, drugi to wartość logiczna zamiatania, więc możemy przekazać tutaj

41
00:03:19,110 --> 00:03:20,310
‫wartość true.

42
00:03:20,310 --> 00:03:24,540
‫Więc skompilujmy to i zobaczmy efekt włączenia zamiatania.

43
00:03:24,540 --> 00:03:30,720
‫Teraz, jeśli naciśniemy play i spróbujemy przejść na przykład przez ścianę, zobaczymy, że przechodzimy przez

44
00:03:30,720 --> 00:03:31,560
‫ścianę.

45
00:03:31,560 --> 00:03:34,020
‫Więc coś tu nie działa.

46
00:03:34,020 --> 00:03:38,280
‫Teraz spójrzmy, czym jest ten element trasy dla zbiornika BP w stawie.

47
00:03:38,280 --> 00:03:41,730
‫Przypomnijmy, użyliśmy komponentu kapsuły do trasy.

48
00:03:41,730 --> 00:03:45,570
‫Tak więc z komponentami kapsułek wybranymi w zbiorniku stawowym BP.

49
00:03:45,570 --> 00:03:51,690
‫Przejdźmy do panelu szczegółów i przewiń w dół, a zobaczymy tutaj sekcję o nazwie Kolizja.

50
00:03:51,690 --> 00:03:55,860
‫A tutaj widzimy Presety kolizji i mają one rozwijane menu.

51
00:03:55,860 --> 00:03:57,420
‫Więc rozszerzmy to.

52
00:03:57,420 --> 00:04:05,010
‫Teraz ustawienia wstępne kolizji można ustawić na dowolną liczbę opcji i domyślnie widzimy nakładanie się wszystkich dynamicznych.

53
00:04:05,010 --> 00:04:08,280
‫Teraz, w zależności od używanej wersji Unreal Engine.

54
00:04:08,280 --> 00:04:11,580
‫Możesz zobaczyć tutaj coś innego, ale możemy to zmienić.

55
00:04:11,580 --> 00:04:18,750
‫Jeśli wybierzemy menu rozwijane i wybierzemy blokowanie wszystkich dynamicznych, wówczas wyszarzane opcje poniżej się zmienią.

56
00:04:18,750 --> 00:04:25,470
‫Pamiętaj, że byliśmy na nakładaniu się wszystkich dynamicznych i tutaj widzimy trzy kolumny pól wyboru.

57
00:04:25,590 --> 00:04:33,240
‫Są to reakcje na kolizje, a kolumna po lewej stronie pokazuje listę typów obiektów kolizji.

58
00:04:33,240 --> 00:04:37,860
‫Tak więc każdy komponent ma swój własny typ obiektu kolizyjnego.

59
00:04:37,860 --> 00:04:42,840
‫Zauważ, że możemy zobaczyć typ obiektu dla kapsuły ustawiony na dynamikę świata.

60
00:04:42,840 --> 00:04:48,600
‫A kiedy zmienimy ustawienia wstępne kolizji, aby zablokować całą dynamikę, zobaczysz, że wszystkie reakcje

61
00:04:48,600 --> 00:04:54,450
‫na kolizje są sprawdzane pod kątem blokowania w odpowiedzi na wszystkie inne typy obiektów kolizji.

62
00:04:54,450 --> 00:04:59,160
‫Więc naciśnijmy play i zobaczmy, co się dzieje, gdy próbujemy przejść przez różne rzeczy.

63
00:04:59,160 --> 00:05:03,630
‫Zobaczysz, że przestajemy się na siebie nakładać.

64
00:05:03,710 --> 00:05:04,860
‫Pozostałe stawy.

65
00:05:04,880 --> 00:05:13,520
‫Teraz, jeśli przesunę zbiornik tak, że możemy spróbować nałożyć się na ścianę i obejść inne

66
00:05:13,520 --> 00:05:14,340
‫stawy.

67
00:05:14,360 --> 00:05:17,900
‫Teraz, jeśli nacisnę play, zablokuję również ścianę.

68
00:05:17,900 --> 00:05:26,330
‫Tak więc ten blok predefiniowanych kolizji, all dynamic ustawia reakcję kolizji na blokowanie wszystkich innych typów obiektów.

69
00:05:26,330 --> 00:05:32,900
‫I zawsze możesz zobaczyć typ obiektu kolizji konkretnego komponentu, wybierając go w panelu komponentów

70
00:05:32,900 --> 00:05:39,590
‫i przewijając w dół do sekcji kolizji w panelu szczegółów i otwierając menu rozwijane dla

71
00:05:39,590 --> 00:05:40,790
‫ustawień kolizji.

72
00:05:40,790 --> 00:05:47,540
‫Mam wybraną siatkę bazową, a jej typ obiektu to świat dynamiczny i jest ustawiony na blokowanie wszystkich.

73
00:05:47,540 --> 00:05:54,350
‫Więc teraz widzimy, że przemiatanie działa, ponieważ ustawiliśmy nasze ustawienia kolizji dla kompozycji kapsuły tak, aby blokowała

74
00:05:54,350 --> 00:05:55,490
‫całą dynamikę.

75
00:05:55,490 --> 00:06:02,720
‫A w dokumentacji widzieliśmy, że tylko główny komponent jest przeszukiwany i sprawdzany pod kątem kolizji blokujących.

76
00:06:02,720 --> 00:06:06,140
‫Więc tak naprawdę nie ma znaczenia, jakie są ustawienia innych komponentów.

77
00:06:06,170 --> 00:06:10,790
‫Sprawdzamy tylko, czy składnik główny coś blokuje.

78
00:06:10,790 --> 00:06:15,800
‫Teraz jeden problem, na który natknęli się niektórzy uczniowie, to to, że nie mogą się ruszyć, gdy tylko ustawią

79
00:06:15,800 --> 00:06:17,510
‫kapsułę tak, aby zablokować całą dynamikę.

80
00:06:17,810 --> 00:06:23,750
‫Jednym z powodów może być to, że twoja kapsuła zachodzi na podłogę.

81
00:06:23,780 --> 00:06:28,820
‫Jeśli kapsuła zachodzi na podłogę, nie będziesz w stanie się poruszyć, ponieważ

82
00:06:28,820 --> 00:06:35,390
‫silnik nie pozwoli twojemu czołgowi na ruch, jeśli element kapsuły nachodzi na coś, co ma blokować.

83
00:06:35,390 --> 00:06:41,240
‫Więc łatwym rozwiązaniem tego problemu byłoby upewnienie się, że kapsuła nie zachodzi na podłogę.

84
00:06:41,720 --> 00:06:49,370
‫Teraz możesz wejść do swojego BP -- zbiornika i upewnić się, że twoja kapsuła jest tuż nad kołami.

85
00:06:49,370 --> 00:06:52,640
‫Przejdę do widoku ortogonalnego.

86
00:06:53,720 --> 00:06:56,840
‫I wybierz moją podstawową siatkę i po prostu ją obniż.

87
00:06:56,840 --> 00:07:00,980
‫Tak więc koła znajdują się tuż pod komponentem kapsuły.

88
00:07:01,190 --> 00:07:06,470
‫Więc teraz, jeśli twoja siatka jest na podłodze, a kapsuła jest tuż nad siatką.

89
00:07:06,680 --> 00:07:09,010
‫Powinieneś być w stanie się poruszać.

90
00:07:09,020 --> 00:07:12,110
‫Więc włączę odtwarzanie i gotowe.

91
00:07:12,740 --> 00:07:17,620
‫Więc teraz, gdy mamy zamiatanie z drogi, czas zacząć wdrażać rotację.

92
00:07:17,630 --> 00:07:19,520
‫Wróćmy do naszych ustawień projektu.

93
00:07:19,520 --> 00:07:29,060
‫Idziemy więc do edycji ustawień projektu, przewijamy w dół do input iw sekcji input mamy nasze mapowania osi.

94
00:07:29,060 --> 00:07:30,710
‫Teraz już się tym zajęliśmy.

95
00:07:30,710 --> 00:07:31,790
‫Ruszaj naprzód.

96
00:07:31,790 --> 00:07:40,220
‫Nadszedł czas, aby zająć się następnym, zwanym Turn and Turn ma przypisane D i A, gdzie D ma

97
00:07:40,220 --> 00:07:44,060
‫skalę jeden, a A ma skalę ujemną.

98
00:07:44,060 --> 00:07:48,080
‫Chcielibyśmy użyć D i AX do obracania czołgiem.

99
00:07:48,170 --> 00:07:54,470
‫Tak więc, aby powiązać funkcję z mapowaniem osi skrętu, potrzebujemy funkcji do powiązania.

100
00:07:54,470 --> 00:08:02,330
‫Wróciliśmy więc do kodu V i zamierzam przejść do pliku tank, abyśmy mogli stworzyć funkcję do powiązania z

101
00:08:02,330 --> 00:08:04,100
‫mapowaniem osi obrotu.

102
00:08:04,100 --> 00:08:08,630
‫Teraz po prostu wywołam tę funkcję void turn i po prostu jak move.

103
00:08:08,660 --> 00:08:12,560
‫Potrzebuje parametru wejściowego zmiennoprzecinkowego i nazwiemy tę wartość.

104
00:08:12,560 --> 00:08:18,530
‫Więc zadeklarowaliśmy tę funkcję, zdefiniujmy ją i tank CP, a ja zamierzam umieścić ją tuż

105
00:08:18,530 --> 00:08:19,790
‫pod funkcją move.

106
00:08:19,790 --> 00:08:26,600
‫Więc nadałem jej treść funkcji i potrzebuję nazwy klasy wraz z podwójnymi dwukropkami tuż przed

107
00:08:26,600 --> 00:08:27,590
‫nazwą funkcji.

108
00:08:27,590 --> 00:08:29,270
‫Teraz mamy właściwą funkcję.

109
00:08:29,270 --> 00:08:31,400
‫To nie jedyna rzecz, którą musimy zrobić.

110
00:08:31,430 --> 00:08:36,590
‫Musimy się upewnić, że ta funkcja jest powiązana z odwzorowaniem osi zwanym turn.

111
00:08:36,590 --> 00:08:44,000
‫Robimy to w ustawieniach komponentu wejściowego odtwarzacza i robimy to tak, jak robiliśmy mapowanie osi ruchu do przodu.

112
00:08:44,000 --> 00:08:51,290
‫Więc powiemy komponent wejściowy gracza, użyjemy operatora strzałki i osi bind.

113
00:08:52,100 --> 00:08:58,250
‫Teraz pierwszym parametrem będzie nazwa odwzorowania osi opakowana w makro tekstowe.

114
00:08:58,340 --> 00:09:02,420
‫Więc powiemy turn, ponieważ to była nazwa odwzorowania osi.

115
00:09:02,420 --> 00:09:05,180
‫Dalej jest obiekt, dla którego przypisujemy funkcję.

116
00:09:05,180 --> 00:09:10,100
‫Możemy to przekazać i na koniec przekazać funkcję, którą chcielibyśmy ponownie powiązać.

117
00:09:10,100 --> 00:09:14,600
‫Potrzebujemy adresu operatora i czeka nas kolej na czołg.

118
00:09:14,600 --> 00:09:16,550
‫Więc to takie proste.

119
00:09:16,580 --> 00:09:21,200
‫Powiązaliśmy funkcję skrętu z mapowaniem osi skrętu.

120
00:09:21,500 --> 00:09:26,330
‫Pozostało tylko zrobić coś w funkcji turn.

121
00:09:26,330 --> 00:09:32,390
‫Widzieliśmy, że mamy lokalne przesunięcie aktora ADD, ale istnieje odpowiednik rotacji tej funkcji i nazywa

122
00:09:32,390 --> 00:09:35,240
‫się to lokalnym obrotem aktora ADD.

123
00:09:35,240 --> 00:09:41,600
‫To, co to robi, to dodanie lokalnego obrotu do aktora, jak sugeruje jego nazwa, i zobaczysz, że istnieją

124
00:09:41,600 --> 00:09:47,330
‫dwie różne wersje funkcji, jedna, która przyjmuje rotator F i druga, która przyjmuje coś, co nazywa

125
00:09:47,330 --> 00:09:48,530
‫się F kwadrat.

126
00:09:48,530 --> 00:09:51,140
‫Użyjemy wersji, która przyjmuje rotator F.

127
00:09:51,140 --> 00:09:53,480
‫Nazywa się to rotacją delta.

128
00:09:53,480 --> 00:10:00,800
‫I podobnie jak przesunięcie lokalne aktora ADD, może również przyjąć parametr wobulacji i te same dwa inne parametry wejściowe,

129
00:10:00,800 --> 00:10:03,170
‫co dodanie lokalnego przesunięcia aktora.

130
00:10:03,170 --> 00:10:08,720
‫A te ostatnie trzy parametry wejściowe są opcjonalne, podobnie jak dodanie lokalnego przesunięcia aktora.

131
00:10:08,720 --> 00:10:13,060
‫Więc zamiast wektora F, przekażemy rotator F.

132
00:10:13,070 --> 00:10:20,210
‫Wracając do funkcji turn, jeśli utworzymy rotator F i nazwiemy to rotacją Delta, zobaczymy, że jeśli klikniemy

133
00:10:20,210 --> 00:10:26,960
‫prawym przyciskiem myszy na rotator F i przejdziemy do definicji, zostaniemy przeniesieni do rotatora i zobaczymy

134
00:10:26,960 --> 00:10:30,410
‫trzy publiczne zmienne składowe tutaj typu float.

135
00:10:30,410 --> 00:10:37,250
‫Teraz, tak jak rotator F wektora F ma tylko te trzy komponenty zamiast X, Y i Z, mamy

136
00:10:37,250 --> 00:10:39,140
‫pitch yaw and roll.

137
00:10:39,140 --> 00:10:42,050
‫Teraz tym elementem, który nas interesuje, jest zbaczanie z kursu.

138
00:10:42,050 --> 00:10:46,940
‫Mówi obrót wokół górnej osi w nawiasach wokół osi Z.

139
00:10:46,940 --> 00:10:52,370
‫I to jedyny rodzaj rotacji, na którym nam zależy, obracając się wokół osi Z.

140
00:10:52,370 --> 00:10:54,500
‫W ten sposób możemy sterować naszym czołgiem.

141
00:10:54,500 --> 00:11:00,860
‫Teraz tylko zaznaczę, że istnieje wiele konstruktorów również dla rotatora F i że domyślnie ponownie

142
00:11:00,860 --> 00:11:06,110
‫mówi, że nie ma inicjalizacji, tak jak w przypadku wektora F.

143
00:11:06,110 --> 00:11:12,410
‫Możemy więc użyć tego, który przyjmuje pojedynczą liczbę zmiennoprzecinkową, a wszystkie komponenty zostaną zainicjowane do tej wartości

144
00:11:12,410 --> 00:11:13,190
‫zmiennoprzecinkowej.

145
00:11:13,220 --> 00:11:18,560
‫Jest jeden z trzema wartościami zmiennoprzecinkowymi i możesz spojrzeć i zobaczyć niektóre z pozostałych.

146
00:11:18,560 --> 00:11:25,820
‫Teraz zaznaczę również, że jest zerowy rotator, a tak przy okazji, to jest statyczny zerowy rotator.

147
00:11:25,820 --> 00:11:34,880
‫Dlatego możemy wrócić do zbiornika CP i powiedzieć coś w rodzaju równa się F rotator zero rotator zero rotator jest statyczną zmienną składową

148
00:11:34,880 --> 00:11:42,170
‫i można uzyskać dostęp do statycznych funkcji składowych i zmiennych takich jak ta, określając nazwę klasy za pomocą

149
00:11:42,170 --> 00:11:47,960
‫operatora rozwiązywania zakresu i odwołując się do tej zmiennej statycznej zmienna lub funkcja według

150
00:11:47,960 --> 00:11:48,440
‫nazwy.

151
00:11:48,440 --> 00:11:50,180
‫To właśnie robimy tutaj z tobą.

152
00:11:50,180 --> 00:11:53,060
‫Statystyka rozgrywki, w której delta sekund na świecie, jest statyczna.

153
00:11:53,310 --> 00:11:59,670
‫Funkcja, co oznacza, że nie potrzebujemy rzeczywistej instancji klasy statyki rozgrywki, aby móc uzyskać

154
00:11:59,670 --> 00:12:02,230
‫dostęp do tej statycznej funkcji.

155
00:12:02,250 --> 00:12:04,160
‫Po prostu już istnieje.

156
00:12:04,170 --> 00:12:06,930
‫To samo z rotatorem zerowym i wektorem zerowym.

157
00:12:07,080 --> 00:12:14,010
‫Więc zamierzam zamknąć rotator h i mamy ten obrót delta i jest on zainicjalizowany z rotatorem

158
00:12:14,010 --> 00:12:14,700
‫zerowym.

159
00:12:14,730 --> 00:12:20,280
‫Teraz twoja wysokość i rola są wyzerowane, tak jak X, Y i Z są wyzerowane dla wektora F.

160
00:12:20,280 --> 00:12:22,920
‫Więc będziemy musieli zmienić twój komponent.

161
00:12:22,920 --> 00:12:29,460
‫Tak jak zrobiłem z naszą lokalizacją delta w funkcji MOV, stwórzmy trochę pseudokodu dla rotacji

162
00:12:29,460 --> 00:12:30,120
‫delta.

163
00:12:30,120 --> 00:12:36,690
‫Tak, oczywiście chcemy, aby wszyscy byli nastawieni na wartość skalowaną przez czas Delta, ponieważ chcemy, aby to obracanie

164
00:12:36,690 --> 00:12:42,570
‫było niezależne od szybkości klatek, ale potrzebujemy również pewnego rodzaju szybkości obracania, którą możemy nazwać tą

165
00:12:42,570 --> 00:12:43,560
‫szybkością obracania.

166
00:12:43,560 --> 00:12:49,890
‫Więc kiedy już to ustawimy, tak, wtedy możemy dodać ten lokalny obrót, który będzie obracał aktora zgodnie z

167
00:12:49,890 --> 00:12:54,630
‫rotatorem F w każdej klatce i że ya będzie skalowane według wartości.

168
00:12:54,630 --> 00:12:59,640
‫Więc będzie zero, jeśli nie naciskamy żadnych klawiszy i będzie miało wartość, jeśli wciśniemy DX

169
00:12:59,640 --> 00:13:00,320
‫i ax.

170
00:13:00,330 --> 00:13:02,190
‫Więc teraz masz wyzwanie.

171
00:13:02,190 --> 00:13:06,090
‫To będzie działać tak samo, jak dodanie lokalnego przesunięcia aktora.

172
00:13:06,120 --> 00:13:09,000
‫Jedyna różnica polega na tym, że obracamy teraz aktora.

173
00:13:09,000 --> 00:13:14,820
‫Więc ponieważ potrzebujemy pewnego rodzaju szybkości obracania się aktora, utworzysz zmienną szybkości obracania, ustawisz

174
00:13:14,820 --> 00:13:20,550
‫ją jako zmiennoprzecinkową i umieścisz w sekcji prywatnej tuż obok zmiennej szybkości.

175
00:13:20,550 --> 00:13:25,560
‫Ujawnij tę zmienną ze swoją właściwością i wybierz odpowiednie nowe specyfikatory właściwości.

176
00:13:25,560 --> 00:13:32,490
‫Teraz w funkcji turn będziesz w szczególności ustawiać rotację delta, dbamy o twój komponent

177
00:13:32,490 --> 00:13:41,280
‫ustaw wartość równą wartości razy nasza zmienna rotacji, a także pomnóż przez czas delta, a następnie jesteś gotowy, aby

178
00:13:41,280 --> 00:13:48,780
‫wywołać add aktor lokalny obrót przechodzący przez ten rotator f teraz dla drugiego parametru, śmiało

179
00:13:48,780 --> 00:13:56,880
‫i przejdź w true dla wejścia przemiatania B, ponieważ chcemy zamiatać podczas obracania, wstrzymać wideo i teraz

180
00:13:56,880 --> 00:13:59,190
‫zaimplementować obrót dla zbiornika.

181
00:14:02,110 --> 00:14:02,500
‫Dobra.

182
00:14:02,500 --> 00:14:04,630
‫Więc to będzie dość proste.

183
00:14:04,630 --> 00:14:07,360
‫Potrzebujemy tylko zmiennej szybkości obrotu.

184
00:14:07,390 --> 00:14:14,440
‫Teraz wejdę do zbiornika tuż pod prędkością i stworzę pływak skrętu.

185
00:14:14,590 --> 00:14:18,640
‫Teraz prawdopodobnie zainicjujesz to do jakiejś wartości i to jest w porządku.

186
00:14:18,640 --> 00:14:24,040
‫Jeśli jest inny niż to, co wybieram, pójdę z 45 F i zobaczę, jak to działa.

187
00:14:24,040 --> 00:14:29,150
‫Ale pokażemy to planom, abyśmy mogli to zmienić podczas rozwoju.

188
00:14:29,170 --> 00:14:35,620
‫Teraz chciałbym, aby był edytowany w dowolnym miejscu i zamierzam umieścić go w tej samej kategorii ruchu, co prędkość.

189
00:14:35,620 --> 00:14:41,320
‫Więc zamierzam śmiało ukraść tę twoją własność i wkleić ją tutaj, powyżej, skręć w prawo, aby ustawić

190
00:14:41,320 --> 00:14:42,180
‫ją gdziekolwiek.

191
00:14:42,190 --> 00:14:45,280
‫Ruch kategorii teraz i CP czołgu.

192
00:14:45,310 --> 00:14:48,190
‫Jestem gotowy, aby ustawić tak dla rotacji Delta.

193
00:14:48,190 --> 00:14:50,320
‫Więc powiemy rotacja delta.

194
00:14:50,650 --> 00:14:51,400
‫Tak.

195
00:14:51,790 --> 00:14:57,060
‫I ustawimy go na równe czasy wartości, czasy obrotu, czas delta.

196
00:14:57,070 --> 00:15:04,120
‫I oczywiście możemy uzyskać czas delta ze statystykami gry U, uzyskać delta sekund świata przechodzące w

197
00:15:04,120 --> 00:15:06,340
‫tym jako obiekt kontekstu świata.

198
00:15:06,460 --> 00:15:08,350
‫Więc zamierzam to wkleić właśnie tam.

199
00:15:08,470 --> 00:15:12,220
‫Teraz wiem, że mój pseudokod dokładnie się nie zgadza.

200
00:15:12,220 --> 00:15:13,270
‫Jest w złej kolejności.

201
00:15:13,270 --> 00:15:14,830
‫Czas delta jest tutaj pośrodku.

202
00:15:14,830 --> 00:15:20,440
‫Nie ma to znaczenia, ponieważ mnożąc trzy wartości razem, możesz je pomnożyć w dowolnej kolejności i nadal

203
00:15:20,440 --> 00:15:21,940
‫uzyskać ten sam wynik.

204
00:15:21,940 --> 00:15:27,460
‫Więc na wypadek, gdybyś się nad tym zastanawiał, matematyka nadal wyjdzie taka sama, jeśli pomnożysz te

205
00:15:27,460 --> 00:15:29,350
‫trzy wartości w innej kolejności.

206
00:15:29,350 --> 00:15:30,910
‫Więc nie przejmuj się tym zbytnio.

207
00:15:30,910 --> 00:15:32,830
‫Teraz mamy rotację delta.

208
00:15:32,830 --> 00:15:41,860
‫Jedyne, co pozostało do zrobienia, to wywołanie dodawania aktora rotacji lokalnej i przechodzimy w rotacji Delta, a

209
00:15:41,950 --> 00:15:47,290
‫dla drugiego wejścia przekażemy true, aby umożliwić przemiatanie podczas obracania.

210
00:15:47,290 --> 00:15:48,670
‫Więc skompilujmy to.

211
00:15:48,820 --> 00:15:50,740
‫W porządku, jesteśmy teraz skompilowani.

212
00:15:50,740 --> 00:15:57,190
‫W kilku następnych filmach możesz zauważyć, że w tych liniach brakuje wektora zerowego i rotatora

213
00:15:57,190 --> 00:15:57,700
‫zerowego.

214
00:15:57,700 --> 00:16:03,010
‫To dlatego, że zacząłem od tych zainicjowanych, a później zdałem sobie sprawę, że prawdopodobnie powinny

215
00:16:03,010 --> 00:16:05,890
‫one zostać zainicjowane przynajmniej z wartościami zerowymi.

216
00:16:05,890 --> 00:16:12,070
‫Więc nie martw się, jeśli później zobaczysz te linie wyglądające tak po inicjalizacji, zachowaj swój wektor zerowy

217
00:16:12,070 --> 00:16:16,690
‫i zerowy rotator, a zobaczysz, że złapię to w niedalekiej przyszłości.

218
00:16:16,690 --> 00:16:17,770
‫Więc nie martw się.

219
00:16:17,770 --> 00:16:21,430
‫Jeśli nie widzisz tych inicjujących, powinny tam być.

220
00:16:21,430 --> 00:16:23,050
‫I wracamy do edytora.

221
00:16:23,050 --> 00:16:30,970
‫Włączmy odtwarzanie, a ja użyję klawisza D i obracamy się, a klawisz A obraca mnie z powrotem w drugą stronę i możemy też

222
00:16:30,970 --> 00:16:33,790
‫poruszać się do przodu i do tyłu.

223
00:16:33,790 --> 00:16:39,570
‫Więc teraz, kiedy możemy się obracać i iść do przodu, mamy możliwość poruszania się po całym świecie.

224
00:16:39,580 --> 00:16:41,890
‫To wielki kamień milowy.

225
00:16:41,890 --> 00:16:47,620
‫Teraz poruszam się dość wolno, ale to jest w porządku, ponieważ mogę wybrać swój czołg i

226
00:16:47,620 --> 00:16:53,230
‫mogę wyszukać kategorię ruchu i zmienić szybkość obrotu na coś wyższego, na przykład 90.

227
00:16:53,230 --> 00:16:54,760
‫Więc chodźmy dalej i włączmy odtwarzanie.

228
00:16:55,460 --> 00:16:57,630
‫A to trochę szybciej.

229
00:16:57,650 --> 00:17:00,110
‫Teraz, jeśli uważasz, że to nadal jest trochę powolne.

230
00:17:00,140 --> 00:17:02,330
‫Oczywiście możesz je dostosować.

231
00:17:02,330 --> 00:17:05,570
‫Więc mam zamiar ponownie wybrać -- zbiornik.

232
00:17:05,570 --> 00:17:08,090
‫I zamiast 400, niech będzie 800.

233
00:17:08,090 --> 00:17:08,720
‫Dlaczego nie?

234
00:17:08,750 --> 00:17:11,840
‫Zamiast 90 powiedzmy 120.

235
00:17:12,260 --> 00:17:16,160
‫Teraz, jeśli nacisnę play, jestem trochę szybszy.

236
00:17:16,160 --> 00:17:18,800
‫Więc to wygląda naprawdę, naprawdę dobrze.

237
00:17:18,800 --> 00:17:23,390
‫Patrząc więc wstecz na plan sekcji, mamy teraz czołg, który może poruszać się po całym świecie.

238
00:17:23,390 --> 00:17:29,300
‫Ten pierwszy punkt jest zdecydowanie odhaczony i zajmujemy się ruchem WASD.

239
00:17:29,300 --> 00:17:32,510
‫Nie zajmujemy się jeszcze wprowadzaniem danych z myszy, ale do tego dojdziemy.

240
00:17:32,510 --> 00:17:35,870
‫Ale jesteśmy o krok bliżej do ukończenia tej gry.

241
00:17:35,870 --> 00:17:42,170
‫Podsumowując, dowiedzieliśmy się, czym jest zamiatanie i jak możemy to umożliwić, aby nasze obiekty nie przechodziły

242
00:17:42,170 --> 00:17:43,130
‫przez siebie.

243
00:17:43,130 --> 00:17:50,210
‫Dodaliśmy lokalną rotację aktorów i zrobiliśmy to, wprowadzając szybkość rotacji, którą mogliśmy dostosować w szczegółach.

244
00:17:50,210 --> 00:17:53,750
‫Panel w edytorze ułatwiający programowanie.

245
00:17:53,750 --> 00:17:54,500
‫Dobra robota.

246
00:17:54,500 --> 00:17:56,480
‫Teraz przewozimy czołg na całym świecie.

247
00:17:56,480 --> 00:17:57,770
‫Do zobaczenia w następnym filmie.

