﻿1
00:00:04,130 --> 00:00:06,050
‫Witam ponownie.

2
00:00:06,080 --> 00:00:10,010
‫Teraz w tym filmie zaczniemy mówić o tym, jak możemy poruszać naszym czołgiem.

3
00:00:10,160 --> 00:00:16,010
‫Aby przenieść czołg, będziemy musieli dodać jakieś przesunięcie i nierealny silnik.

4
00:00:16,010 --> 00:00:21,650
‫Jeśli chodzi o dodawanie offsetu, musimy podjąć decyzję, czy dokonać offsetu w przestrzeni lokalnej

5
00:00:21,650 --> 00:00:23,690
‫czy w przestrzeni światowej.

6
00:00:23,690 --> 00:00:26,840
‫Omówmy więc różnicę między tymi dwiema rzeczami.

7
00:00:27,200 --> 00:00:34,220
‫Teraz, w edytorze, mam wybrany -- zbiornik i jak tylko to wybierze, zauważycie,

8
00:00:34,220 --> 00:00:36,560
‫że jest tam gadżet.

9
00:00:36,590 --> 00:00:38,720
‫Tak nazywa się ta rzecz, gadżet.

10
00:00:38,720 --> 00:00:41,810
‫Ma trzy strzały i każda z nich ma inny kolor.

11
00:00:41,810 --> 00:00:47,360
‫Teraz, jeśli nie zauważyłeś, w lewym dolnym rogu ekranu znajduje się kolejny mniejszy gadżet.

12
00:00:47,360 --> 00:00:53,000
‫I wygląda to podobnie do gadżetu aktora, którego wybieramy.

13
00:00:53,000 --> 00:00:56,750
‫Więc jeśli wybiorę jakiegoś aktora, zawsze dostaniemy ten gadżet.

14
00:00:56,750 --> 00:01:02,660
‫I oczywiście metauchwyt zmienia się, gdy przechodzimy z trybu tłumaczenia przez obracanie do trybu skalowania.

15
00:01:02,660 --> 00:01:09,020
‫Tak długo, jak jesteśmy w tłumaczeniu, do którego możemy uzyskać dostęp z tej skrajnej lewej ikony w prawym

16
00:01:09,020 --> 00:01:16,550
‫górnym rogu okna widoku lub za pomocą klawisza W, mamy możliwość przenoszenia rzeczy lub tłumaczenia ich, przeciągając jedną

17
00:01:16,550 --> 00:01:18,260
‫ze strzałek na gadżet.

18
00:01:18,260 --> 00:01:26,180
‫Kolory odpowiadają osiom czerwonym, ponieważ oś x zielony to oś y, a niebieski to oś z.

19
00:01:26,210 --> 00:01:32,000
‫Teraz, jeśli obrócimy nasz widok i spojrzymy w innym kierunku, zobaczymy, że ten gadżet nadal wskazuje

20
00:01:32,000 --> 00:01:34,070
‫ten sam pierwotny kierunek.

21
00:01:34,070 --> 00:01:40,520
‫A gdy się obracamy, metauchwyt w lewym dolnym rogu rzutni obraca się, ponieważ kierunek

22
00:01:40,520 --> 00:01:42,740
‫świata się nie zmienia.

23
00:01:42,740 --> 00:01:44,060
‫Na razie w porządku.

24
00:01:44,060 --> 00:01:51,530
‫Teraz patrzymy na kierunki w przestrzeni świata, ale dla każdego aktora na świecie istnieje kierunek

25
00:01:51,530 --> 00:01:52,310
‫lokalny.

26
00:01:52,310 --> 00:01:58,670
‫Możemy to zobaczyć, klikając tę ikonę, która wygląda jak świat, a wyskakujące okienko mówi cykle, gadżet

27
00:01:58,670 --> 00:02:03,560
‫transformacji koordynuje układy między światem a przestrzenią lokalną.

28
00:02:03,560 --> 00:02:09,050
‫Kiedy widzimy tutaj świat, oznacza to, że patrzymy na przestrzeń świata, ale jeśli na nią

29
00:02:09,080 --> 00:02:16,700
‫klikniemy, zamienia się teraz w sześcian i teraz patrzymy na lokalną przestrzeń dla danego aktora, którego wybraliśmy.

30
00:02:16,700 --> 00:02:21,110
‫Gizmo w lewym dolnym rogu rzutni nadal pokazuje nam przestrzeń świata.

31
00:02:21,110 --> 00:02:27,560
‫Ale jeśli wezmę tego aktora i przełączę się w tryb rotacji i obrócę go, to kiedy wrócę do trybu tłumaczenia,

32
00:02:27,560 --> 00:02:32,390
‫zobaczysz, że gadżet wskazuje teraz w innym kierunku.

33
00:02:32,390 --> 00:02:36,680
‫Sam aktor ma własną lokalną oś x.

34
00:02:36,680 --> 00:02:40,730
‫Możemy myśleć o osi x aktora jako o jego wektorze do przodu.

35
00:02:40,730 --> 00:02:46,520
‫Teraz zauważ, że w lewym dolnym rogu ekranu gadżet nadal wskazuje w tym samym kierunku.

36
00:02:46,520 --> 00:02:54,530
‫Ale ten aktor tutaj, pionek, ma swój lokalny kierunek X i wskazuje w innym kierunku.

37
00:02:54,530 --> 00:03:01,250
‫Teraz, jeśli kliknę sześcian tutaj i przekształcę go z powrotem w świat teraz, gadżet czołgu zostanie dopasowany

38
00:03:01,250 --> 00:03:09,050
‫i wyrównany z kierunkiem osi świata, dzięki czemu możemy przełączać się między światem a przestrzenią lokalną, aby dowolny

39
00:03:09,050 --> 00:03:14,330
‫aktor mógł zobaczyć swoją lokalną kierunek kontra jego światowy kierunek.

40
00:03:14,690 --> 00:03:20,540
‫Widzieliśmy więc, że dla każdego aktora, którego wybieramy w naszym świecie, ma to swój lokalny kierunek.

41
00:03:20,540 --> 00:03:27,320
‫I to może, ale nie musi, różnić się od kierunku świata, jak pokazano na tym obrazku.

42
00:03:27,440 --> 00:03:33,200
‫Jest to więc bardzo ważne, jeśli chodzi o przesuwanie obiektów w Unreal Engine.

43
00:03:33,200 --> 00:03:38,990
‫Istnieją funkcje do poruszania obiektów i istnieje inny zestaw funkcji do poruszania się w przestrzeni

44
00:03:38,990 --> 00:03:41,150
‫świata niż w przestrzeni lokalnej.

45
00:03:41,150 --> 00:03:47,480
‫Powiedzmy, że nasz czołg jest zwrócony w tę stronę, a jego oś x jest skierowana nieco w lewo, jak wskazuje strzałka,

46
00:03:47,480 --> 00:03:50,150
‫którą narysowałem tutaj na czołgu.

47
00:03:50,150 --> 00:03:55,910
‫Teraz widzimy, na podstawie tego gadżetu w lewym dolnym rogu, że kierunek osi x świata wskazuje

48
00:03:55,910 --> 00:03:56,720
‫w prawo.

49
00:03:56,720 --> 00:04:00,200
‫Więc czołg nie jest ustawiony w kierunku kosmosu.

50
00:04:00,410 --> 00:04:05,660
‫Powiedzmy, że mamy przesunąć ten czołg w przestrzeni świata w dodatnim kierunku X.

51
00:04:05,660 --> 00:04:12,020
‫Wtedy, nawet jeśli czołg jest skierowany w lewo, nadal będzie się poruszał w tym kierunku x świata i będzie wyglądał,

52
00:04:12,020 --> 00:04:14,300
‫jakby poruszał się do tyłu.

53
00:04:14,300 --> 00:04:15,950
‫Więc nie tego chcemy.

54
00:04:15,980 --> 00:04:22,250
‫Z drugiej strony, powiedzmy, że używamy funkcji, która została zaprojektowana do przemieszczania zbiornika w jego własnej przestrzeni

55
00:04:22,250 --> 00:04:22,910
‫lokalnej.

56
00:04:22,940 --> 00:04:30,620
‫Oznacza to, że jeśli przesuniemy czołg we własnym lokalnym kierunku X, będzie on poruszał się do przodu w kierunku, którego można

57
00:04:30,620 --> 00:04:31,760
‫by się spodziewać.

58
00:04:31,760 --> 00:04:34,310
‫I to jest zachowanie, którego chcemy.

59
00:04:34,340 --> 00:04:35,690
‫Teraz w Unreal Engine.

60
00:04:35,690 --> 00:04:40,190
‫Funkcja, która może to dla nas zrobić, nazywa się Add Actor Local Offset.

61
00:04:40,190 --> 00:04:43,970
‫Ta funkcja przesuwa aktora w kierunku lokalnym.

62
00:04:44,090 --> 00:04:47,900
‫Teraz stosuje przesunięcie, które jest pojedynczym ruchem.

63
00:04:47,930 --> 00:04:54,140
‫Zasadniczo mówimy mu, w którym kierunku ma się poruszać i jak daleko, i przesuwa ten obiekt raz, co oznacza, że będziemy

64
00:04:54,140 --> 00:04:58,790
‫wywoływać tę funkcję w każdej klatce, o którą chcemy przesunąć zbiornik.

65
00:04:58,790 --> 00:05:03,530
‫Więc będziemy przesuwać go małymi krokami od czasu wywołania funkcji w każdej klatce.

66
00:05:03,680 --> 00:05:11,480
‫Oznacza to, że nazywamy to teraz bardzo często dla naszego czołgu, jego własna lokalna oś X to jego kierunek do przodu.

67
00:05:11,480 --> 00:05:16,010
‫To jest oś, której użyjemy, gdy dodamy lokalne przesunięcie.

68
00:05:16,400 --> 00:05:20,990
‫Oto nierealna dokumentacja silnika dla lokalnego przesunięcia aktora ADD.

69
00:05:20,990 --> 00:05:24,590
‫Widzisz, że jest to funkcja należąca do klasy aktora.

70
00:05:24,590 --> 00:05:29,990
‫Dlatego teraz nazywa się to add actor local offset, ponieważ istnieje w klasie aktora.

71
00:05:29,990 --> 00:05:33,140
‫Pionki odziedziczą tę funkcję, abyśmy mogli z niej korzystać.

72
00:05:33,170 --> 00:05:34,820
‫Oto składnia.

73
00:05:34,820 --> 00:05:37,220
‫Posiada cztery parametry wejściowe.

74
00:05:37,220 --> 00:05:41,090
‫Pierwszy to wektor F zwany lokalizacją delta.

75
00:05:41,090 --> 00:05:47,630
‫Więc będziemy musieli stworzyć wektor F, który możemy przekazać do tej funkcji lokalnego przesunięcia addactor.

76
00:05:47,630 --> 00:05:50,840
‫Więc wiemy o tym dodaniu lokalnego przesunięcia aktora.

77
00:05:50,840 --> 00:05:56,930
‫Chciałbym z tym poeksperymentować, aby zobaczyć, jak to działa, abyśmy mogli to zrobić w funkcji tiku.

78
00:05:56,930 --> 00:06:03,590
‫Teraz nie nadpisujemy funkcji tic w klasie czołgów, ale mamy ją w podstawowej klasie

79
00:06:03,590 --> 00:06:04,250
‫ponga.

80
00:06:04,250 --> 00:06:10,490
‫Jeśli przejdziemy do CP stawu bazowego, mamy tu funkcję tik i nic tu nie robimy, a to jest idealne do

81
00:06:10,490 --> 00:06:12,710
‫przeprowadzenia eksperymentów.

82
00:06:12,710 --> 00:06:18,530
‫Więc to, co zamierzam zrobić, to wpisać, dodać, aktor, lokalny offset tak po prostu.

83
00:06:18,530 --> 00:06:22,760
‫I zamierzam kliknąć prawym przyciskiem myszy i wybrać przejdź do definicji.

84
00:06:22,760 --> 00:06:28,520
‫Teraz w pliku aktora CP mamy definicję lokalnego przesunięcia aktora ADD.

85
00:06:28,520 --> 00:06:30,170
‫Teraz zauważ coś interesującego.

86
00:06:30,170 --> 00:06:37,910
‫Sprawdza, czy komponent główny nie jest null, a jeśli nie, to wywołuje funkcję add local offset.

87
00:06:37,910 --> 00:06:41,720
‫Tak naprawdę to, co robimy, to dodawanie offsetu do głównego komponentu.

88
00:06:41,720 --> 00:06:46,970
‫A ponieważ wszystkie inne komponenty są dołączone do komponentu głównego, będą się z nim poruszać.

89
00:06:46,970 --> 00:06:51,740
‫Dlatego ważne jest, aby pamiętać, że kiedy dodajemy lokalne przesunięcie, przesuwamy komponent główny, a wszystko

90
00:06:51,740 --> 00:06:53,480
‫inne po prostu przesuwa się wraz z nim.

91
00:06:53,480 --> 00:07:00,290
‫Teraz, jeśli najedziemy kursorem na dodaj lokalny offset, zobaczymy, że wszystkie cztery parametry wejściowe są tutaj wymienione.

92
00:07:00,290 --> 00:07:06,140
‫Poza pierwszym, który jest wektorem F, pozostałe mają wartości domyślne.

93
00:07:06,140 --> 00:07:09,800
‫Zwróć uwagę, że przemiatanie bool B, które mówi, że jest równe false.

94
00:07:09,800 --> 00:07:14,840
‫Trzecie i czwarte parametry wejściowe również mają te wartości domyślne.

95
00:07:14,840 --> 00:07:21,740
‫Oznacza to, że jeśli wywołamy tę funkcję i nie przekażemy danych wejściowych dla ostatnich trzech parametrów wejściowych, zostaną

96
00:07:21,740 --> 00:07:24,290
‫one domyślnie ustawione na te wartości.

97
00:07:24,320 --> 00:07:31,220
‫Teraz zamierzam zamknąć aktora CP i tutaj w funkcji tiku stawu podstawowego chciałbym wywołać add actor local offset każdej

98
00:07:31,220 --> 00:07:34,280
‫klatki tylko po to, aby zobaczyć, jak to działa.

99
00:07:34,400 --> 00:07:37,790
‫Teraz wiemy, że pierwszym parametrem wejściowym jest wektor F.

100
00:07:37,790 --> 00:07:39,470
‫Nazywa się to lokalizacją delta.

101
00:07:39,470 --> 00:07:44,030
‫Jest to ilość ruchu, którą chcielibyśmy dodać za każdym razem, gdy wywołamy tę funkcję.

102
00:07:44,030 --> 00:07:48,380
‫Więc stworzę wektor F zwany lokalizacją delta.

103
00:07:48,380 --> 00:07:51,800
‫Czyli położenie delty wektora F.

104
00:07:51,980 --> 00:07:54,350
‫Teraz chciałbym wyzerować ten wektor.

105
00:07:54,350 --> 00:07:58,340
‫Innymi słowy, upewnij się, że jest zainicjowany wszystkimi zerami.

106
00:07:58,430 --> 00:08:05,870
‫Teraz chcę mieć wektor zerowy, który mogę przekazać w zero f, x, y i z dostaną zero f.

107
00:08:05,870 --> 00:08:08,450
‫Więc to będzie dobrze służyć moim celom.

108
00:08:08,480 --> 00:08:14,960
‫Teraz wezmę lokalizację Delta X i zmienię ją na dwa punkty F.

109
00:08:14,960 --> 00:08:20,540
‫W ten sposób mamy wektor z Y i Z ustawionymi na zero, x ustawionym na dwa.

110
00:08:20,570 --> 00:08:27,770
‫Więc zamierzam przejść dalej i przekazać lokalizację Delta do dodania lokalnego przesunięcia aktora jako rodzaj eksperymentu.

111
00:08:27,800 --> 00:08:34,310
‫Teraz mogę uciec z wywołaniem lokalnego przesunięcia add aktora i po prostu przekazaniem pierwszego parametru wejściowego,

112
00:08:34,310 --> 00:08:36,470
‫ponieważ pozostałe trzy są opcjonalne.

113
00:08:36,500 --> 00:08:39,080
‫Więc zamierzam to skompilować i zobaczyć, co się stanie.

114
00:08:40,520 --> 00:08:43,880
‫Teraz, jeśli pójdziemy dalej i wciśniemy play, zauważ, kilka rzeczy.

115
00:08:43,880 --> 00:08:46,100
‫Po pierwsze, spójrz, wieża też się porusza.

116
00:08:46,130 --> 00:08:52,730
‫Dzieje się tak dlatego, że umieściliśmy to w funkcji tika dla piona podstawowego i obie te więzi dziedziczą po pionie podstawowym.

117
00:08:52,730 --> 00:08:56,060
‫W rzeczywistości wszystkie te stawy się poruszały.

118
00:08:56,060 --> 00:09:01,280
‫Interesujące jest to, że wszystkie poruszają się we własnych kierunkach osi x.

119
00:09:01,280 --> 00:09:04,640
‫Z tego punktu widzenia widzimy, że wszystko porusza się jednocześnie.

120
00:09:04,670 --> 00:09:10,940
‫Jeśli klikniemy listę rozwijaną obok gry i wybierzemy symulację, pozwoli nam to zagrać w grę bez

121
00:09:10,940 --> 00:09:12,260
‫posiadania stawów.

122
00:09:12,260 --> 00:09:14,810
‫Więc jeśli kliknę Symuluj, sprawdź to.

123
00:09:14,810 --> 00:09:18,580
‫Każdy staw porusza się we własnym kierunku osi x.

124
00:09:18,590 --> 00:09:22,070
‫To jest całkiem dziwne i całkiem fajne.

125
00:09:22,070 --> 00:09:25,760
‫To pokazuje nam, jak działa lokalne przesunięcie aktora reklamowego.

126
00:09:25,760 --> 00:09:28,220
‫Porusza rzeczy w ich lokalnych kierunkach.

127
00:09:28,280 --> 00:09:34,220
‫Teraz możemy wyjść z trybu symulacji, klikając menu rozwijane i wybierając wybrany

128
00:09:34,220 --> 00:09:38,000
‫widok, co pozwoli nam grać w zwykłym trybie gry.

129
00:09:38,030 --> 00:09:44,630
‫W porządku, zamierzam to zatrzymać i możemy wrócić do bazy -- i usunąć ten eksperymentalny

130
00:09:44,630 --> 00:09:45,220
‫kod.

131
00:09:45,230 --> 00:09:51,320
‫Zamierzam iść dalej i po prostu usunąć to z funkcji ticka, więc teraz wiemy, jak działa dodawanie lokalnego

132
00:09:51,320 --> 00:09:52,700
‫przesunięcia aktora.

133
00:09:52,880 --> 00:09:56,780
‫Wróćmy więc do Tank CP i tutaj mamy funkcję MOVE.

134
00:09:56,780 --> 00:10:02,960
‫Wiemy, że ta funkcja jest wywoływana w każdej pojedynczej klatce i wiemy, że wartość jest równa jeden.

135
00:10:03,080 --> 00:10:09,260
‫Jeśli wciskamy klawisz W i jest ujemny, jeśli wciskamy klawisz i jest zero, jeśli wciskamy

136
00:10:09,260 --> 00:10:10,970
‫oba lub żaden.

137
00:10:11,420 --> 00:10:16,340
‫Tak więc dla twojego wyzwania zamierzasz przesunąć czołg za pomocą dodania lokalnego przesunięcia aktora.

138
00:10:16,340 --> 00:10:21,350
‫Więc w funkcji MOV utworzysz wektor F zwany lokalizacją delta.

139
00:10:21,350 --> 00:10:24,440
‫Teraz upewnij się, że wyzerowałeś X, Y i z.

140
00:10:24,560 --> 00:10:30,680
‫Możesz to zrobić na wiele sposobów, na przykład używając jednego z różnych konstruktorów wektorów f.

141
00:10:30,680 --> 00:10:37,760
‫Teraz, gdy wyzerujesz wszystkie składniki, ustaw jego x na wartość wartości parametru wejściowego zmiennoprzecinkowego

142
00:10:37,760 --> 00:10:39,620
‫w funkcji MOV.

143
00:10:39,620 --> 00:10:45,410
‫Gdy już to zrobisz, idź dalej i wywołaj add aktor lokalny offset przechodzący w lokalizacji delta.

144
00:10:45,860 --> 00:10:48,140
‫Zatrzymaj wideo i zrób to teraz.

145
00:10:51,220 --> 00:10:51,670
‫Dobra.

146
00:10:51,670 --> 00:10:54,610
‫Więc wróciłem tutaj w pliku CP czołgu.

147
00:10:54,610 --> 00:11:00,370
‫Teraz nie potrzebuję już tego dziennika EWI, więc wyjmę go i stworzę wektor

148
00:11:00,370 --> 00:11:02,440
‫F o nazwie Delta location.

149
00:11:02,440 --> 00:11:05,650
‫Teraz mogę użyć jednego z konstruktorów wektorów F.

150
00:11:05,650 --> 00:11:09,430
‫Pokazałem już, jak stworzyć nowy wektor ze wszystkimi zerami.

151
00:11:09,430 --> 00:11:15,700
‫Pokażę ci inny sposób, który polega na zainicjowaniu tego wektorem f, wektorem zerowym.

152
00:11:16,270 --> 00:11:21,520
‫I dokładnie tak to brzmi, wektor z zerem dla każdego składnika.

153
00:11:21,550 --> 00:11:23,980
‫To tylko po to, by pokazać ci alternatywny sposób.

154
00:11:23,980 --> 00:11:25,510
‫Więc mamy wektor zerowy.

155
00:11:25,510 --> 00:11:31,270
‫Teraz wezmę lokalizację delta X i ustawię ją na wartość.

156
00:11:31,570 --> 00:11:39,670
‫I na koniec mogę wywołać dodanie aktora lokalnego przesunięcia przechodzącego w lokalizacji delta.

157
00:11:40,630 --> 00:11:47,260
‫Więc skompilujmy to i wróćmy tutaj w edytorze, wezmę mój czołg i po prostu zorientuję go tak,

158
00:11:47,260 --> 00:11:54,550
‫aby był zwrócony w kierunku X świata, a następnie mogę nacisnąć przycisk odtwarzania i teraz kliknąć

159
00:11:54,550 --> 00:11:55,270
‫widok.

160
00:11:55,270 --> 00:12:00,880
‫Jeśli nacisnę klawisz W, idę do przodu, a jeśli nacisnę klawisz, cofnę się.

161
00:12:00,880 --> 00:12:05,230
‫Jeśli nacisnę oba, znoszą się nawzajem i w ogóle się nie ruszam.

162
00:12:05,230 --> 00:12:08,140
‫I oczywiście, jeśli nic nie naciskam, to też się nie ruszam.

163
00:12:08,140 --> 00:12:13,480
‫Więc mamy teraz ruch dla naszego czołgu, ale jest trochę powolny, więc będziemy musieli trochę poprawić.

164
00:12:13,480 --> 00:12:18,400
‫Porozmawiamy też o dopracowaniu tej mechaniki ruchu w naszym czołgu.

165
00:12:18,640 --> 00:12:24,370
‫Podsumowując, dowiedzieliśmy się o ADD Actor, lokalnym przesunięciu i różnicy między przestrzenią światową a przestrzenią

166
00:12:24,370 --> 00:12:25,300
‫lokalną.

167
00:12:25,300 --> 00:12:29,800
‫W następnym filmie będziemy kontynuować doskonalenie tej mechaniki ruchu za pomocą naszego czołgu.

168
00:12:30,010 --> 00:12:31,000
‫Zobaczymy się wkrótce.

