﻿1
00:00:04,370 --> 00:00:05,300
‫Cześć i witaj.

2
00:00:05,300 --> 00:00:10,190
‫W tym wykładzie zamierzamy wykonać nasz ruch, trochę się poruszać, zaznaczając pole wyboru.

3
00:00:10,190 --> 00:00:14,570
‫Umożliwimy mu poruszanie się i poruszanie się ze stałą prędkością.

4
00:00:14,810 --> 00:00:19,370
‫Tym razem będziemy to robić, używając pewnych funkcji bibliotecznych od wewnątrz.

5
00:00:19,370 --> 00:00:19,970
‫Nierealny.

6
00:00:20,210 --> 00:00:24,860
‫Dlatego poddamy testowi całą naszą wiedzę na temat plików i dołączeń.

7
00:00:24,860 --> 00:00:26,510
‫Zanurzmy się i zobaczmy, jak to działa.

8
00:00:27,470 --> 00:00:34,610
‫Więc sposób, w jaki chcę, aby to zadziałało, polega na tym, że chcę, aby poruszał się płynnie od miejsca, w

9
00:00:34,610 --> 00:00:38,510
‫którym się zaczął, do przesunięcia docelowego przez określoną liczbę sekund.

10
00:00:38,510 --> 00:00:43,610
‫Więc sposób, w jaki będziemy musieli to skonfigurować, to dodanie nowych właściwości do pliku nagłówkowego.

11
00:00:43,610 --> 00:00:48,950
‫Zacznijmy więc od dodania prywatnej sekcji do nagłówka

12
00:00:48,950 --> 00:00:58,850
‫pliku, a następnie dodamy nową właściwość, która zostanie dodana w dowolnym miejscu, która zdefiniuje przesunięcie, przesunięcie przesunięcia.

13
00:00:59,090 --> 00:01:03,410
‫Więc jak daleko powinien się poruszać ten ruch, gdy jest aktywowany.

14
00:01:03,890 --> 00:01:08,570
‫Więc sposób, w jaki to zrobimy, użyje wektora F i zamierzam go nazwać przesunięciem

15
00:01:08,600 --> 00:01:11,780
‫ruchu, tak aby nie nadać mu wartości domyślnej.

16
00:01:12,020 --> 00:01:13,400
‫Zrobimy to w edytorze.

17
00:01:13,940 --> 00:01:19,310
‫Następnie stworzę kolejną właściwość U, która ponownie zostanie dodana w dowolnym miejscu,

18
00:01:19,310 --> 00:01:23,780
‫czyli będzie to czas potrzebny na przejście do celu.

19
00:01:24,140 --> 00:01:29,030
‫Więc to będzie pływak, czyli czas ruchu.

20
00:01:29,830 --> 00:01:33,140
‫Ustawię to na domyślną wartość, powiedzmy, 4 sekundy.

21
00:01:33,440 --> 00:01:39,680
‫Teraz, jest jeszcze jedna rzecz, którą chcę tutaj umieścić, jest to wartość logiczna na

22
00:01:39,680 --> 00:01:47,000
‫razie, która pozwoli nam aktywować ruch tak, aby przesunął się w dół, gdy aktywujemy tę wartość logiczną.

23
00:01:47,000 --> 00:01:52,700
‫Stwórzmy więc ponownie nową właściwość, edytujmy w dowolnym miejscu, abyśmy mogli ją dodać nawet podczas

24
00:01:52,700 --> 00:01:53,360
‫gry.

25
00:01:53,780 --> 00:02:00,860
‫To będzie boolean mówiące, że powinno się przenieść i domyślnie będzie ustawione na false.

26
00:02:01,220 --> 00:02:07,640
‫Więc kiedy zaznaczymy to w edytorze, kiedy gramy, to pójdzie i przesunie się do docelowego

27
00:02:07,640 --> 00:02:08,600
‫przesunięcia ruchu.

28
00:02:08,780 --> 00:02:13,310
‫Teraz, kiedy mieliśmy ruchomy komponent, wszystkie kroki wykonywaliśmy ręcznie.

29
00:02:13,310 --> 00:02:16,460
‫Ale chcę pokazać, że w rzeczywistości jest wbudowana pewna funkcjonalność.

30
00:02:16,460 --> 00:02:23,330
‫Wiele potrzebnych nam obliczeń jest wbudowanych bezpośrednio w Unreal i jest też funkcja o nazwie V

31
00:02:23,330 --> 00:02:24,620
‫interpretująca stała.

32
00:02:24,830 --> 00:02:28,460
‫A co ciekawe, spójrzmy na uwagi.

33
00:02:28,460 --> 00:02:36,500
‫Zatem interpoluj wektor z bieżącego wektora do wektora docelowego za pomocą stałego kroku.

34
00:02:36,890 --> 00:02:43,880
‫Oznacza to, że z czasem będziemy przemieszczać się od prądu do celu z określoną prędkością i będzie to

35
00:02:43,880 --> 00:02:47,300
‫robić stale, co brzmi dokładnie tak, jak chcemy.

36
00:02:47,300 --> 00:02:52,160
‫Chcemy przemieszczać się z naszej obecnej lokalizacji do docelowej lokalizacji przesunięcia ze stałą prędkością.

37
00:02:52,760 --> 00:02:57,140
‫Teraz widzisz, że rzuciłeś okiem na składnię tej funkcji.

38
00:02:57,140 --> 00:02:59,990
‫Widać, że ma zwracany typ wektora.

39
00:02:59,990 --> 00:03:03,380
‫To jest nowa lokalizacja, którą interpoluje.

40
00:03:03,860 --> 00:03:06,590
‫Następnie ma dwa wejścia.

41
00:03:06,590 --> 00:03:14,540
‫Mamy aktualny wektor F i na razie nie martw się o inne symbole wokół tego efektu,

42
00:03:14,810 --> 00:03:21,650
‫po prostu ważne jest to, że jest to bieżący czynnik, a następnie cel,

43
00:03:22,250 --> 00:03:31,460
‫który chcemy ostatecznie osiągnąć, a następnie ma deltę czasu, więc używa go do uniezależnienia szybkości klatek ruchu i szybkości

44
00:03:31,460 --> 00:03:32,120
‫interpolacji.

45
00:03:32,120 --> 00:03:37,040
‫Jak szybko powinniśmy przemieszczać się z naszej obecnej lokalizacji do celu?

46
00:03:37,220 --> 00:03:45,500
‫Teraz zauważysz, że tutaj w dokumentacji faktycznie znajduje się sekcja, która mówi o dołączeniu, a to mówi ci, której

47
00:03:45,500 --> 00:03:51,740
‫linii dołączania będziesz potrzebować w swoim pliku C++, aby móc korzystać z tej

48
00:03:51,740 --> 00:03:52,220
‫funkcji.

49
00:03:52,220 --> 00:04:00,770
‫Jak widzieliśmy w poprzednim filmie, linia include pozwala nam kopiować definicje z tego

50
00:04:00,770 --> 00:04:02,240
‫konkretnego pliku.

51
00:04:02,450 --> 00:04:05,930
‫A jedną z definicji jest definicja tej funkcji.

52
00:04:05,930 --> 00:04:13,220
‫Więc pozwala nam użyć tej stałej przecięcia V, aby teraz V przed tą funkcją zasadniczo oznaczało, że

53
00:04:13,220 --> 00:04:15,110
‫wykonuje interpolację na wektorach.

54
00:04:15,110 --> 00:04:20,660
‫Dlatego nazywa się to v interpret, w przeciwieństwie do innych funkcji interpolacji, które są również dostępne w

55
00:04:20,930 --> 00:04:22,220
‫tym pliku biblioteki.

56
00:04:22,490 --> 00:04:24,080
‫Przyjrzyjmy się więc, jak byśmy go wykorzystali.

57
00:04:24,080 --> 00:04:29,810
‫Przede wszystkim skopiujemy linię include z dokumentacji i przejdziemy do naszego ruchu ACP,

58
00:04:29,810 --> 00:04:34,280
‫w którym chcemy zaimplementować to w ciele komponentu tick.

59
00:04:34,700 --> 00:04:38,600
‫Ale obejmują one, że nie uwzględniamy w ciele składnika kleszcza.

60
00:04:38,600 --> 00:04:41,630
‫Musimy zrobić wszystkie dołączenia na górze pliku.

61
00:04:42,170 --> 00:04:44,180
‫Więc tam mam zamiar umieścić swój.

62
00:04:44,190 --> 00:04:47,620
‫Zamierzam umieścić moje po uwzględnieniu przesunięcia kropki.

63
00:04:47,630 --> 00:04:54,050
‫Więc wstawimy i dodamy do matematyki nierealne narzędzie matematyczne kropkę.

64
00:04:54,830 --> 00:04:59,870
‫Teraz możemy użyć funkcji w naszym komponencie tikowym.

65
00:04:59,870 --> 00:05:03,780
‫Pozbądźmy się kodu, który już mamy i zaznaczmy kompilację.

66
00:05:04,020 --> 00:05:09,030
‫Ponieważ używaliśmy tego, aby zrozumieć, jak wywoływać funkcje na innych aktorach.

67
00:05:10,230 --> 00:05:17,130
‫A to, co musimy zrobić, to jeśli przewiniesz w górę, zobaczysz sposób na wywołanie tego jako f dwukropek matematyczny V

68
00:05:17,130 --> 00:05:18,700
‫w nakłuciu stała do.

69
00:05:18,750 --> 00:05:27,180
‫Więc robimy ten operator dwukropka, który zagląda do klasy matematycznej F, która organizuje razem

70
00:05:27,180 --> 00:05:29,880
‫wszystkie te narzędzia matematyczne.

71
00:05:30,360 --> 00:05:33,110
‫Więc zrobimy matematykę F.

72
00:05:33,330 --> 00:05:34,220
‫Okrężnica.

73
00:05:35,430 --> 00:05:41,370
‫I tutaj możesz zobaczyć kilka autouzupełniania nadchodzących dla różnych funkcji matematycznych zawartych w tym pliku

74
00:05:41,370 --> 00:05:44,580
‫nagłówkowym, który właśnie umieściliśmy w tym pliku.

75
00:05:44,790 --> 00:05:47,960
‫Możesz więc przejrzeć, zobaczyć, jakakolwiek z interesujących rzeczy jest tutaj.

76
00:05:47,960 --> 00:05:55,580
‫Widzę kilka interpolacji i interpolacji kołowych itp. ale chcieliśmy, aby v interpretowała stała.

77
00:05:55,990 --> 00:06:03,390
‫Możemy nacisnąć tabulator, aby to zakończyć, a następnie otworzyć kilka nawiasów i zobaczyć argumenty, które

78
00:06:03,390 --> 00:06:08,910
‫musimy przekazać w prądzie, docelowy czas delta i prędkość przechwycenia.

79
00:06:09,330 --> 00:06:13,620
‫Zacznijmy więc tworzyć zmienne do przechowywania niektórych z nich.

80
00:06:14,310 --> 00:06:21,960
‫Przede wszystkim potrzebujemy wektora F, który będzie naszą obecną lokalizacją i nie zamierzamy go

81
00:06:21,960 --> 00:06:23,350
‫jeszcze ustawiać.

82
00:06:23,370 --> 00:06:31,200
‫Następnie będziemy mieli wektor F dla lokalizacji docelowej, a następnie otrzymamy zmiennoprzecinkową

83
00:06:31,200 --> 00:06:32,040
‫prędkość.

84
00:06:33,150 --> 00:06:38,070
‫I będziemy musieli obliczyć każdy z nich indywidualnie, aby dowiedzieć się, jak możemy sprawić, by ten ruch się

85
00:06:38,070 --> 00:06:38,460
‫wydarzył.

86
00:06:38,640 --> 00:06:42,390
‫Tak więc obecna lokalizacja będzie stosunkowo prosta.

87
00:06:42,420 --> 00:06:46,410
‫Musimy ustalić aktualną lokalizację aktora będącego właścicielem.

88
00:06:46,440 --> 00:06:47,130
‫Więc jak to robimy?

89
00:06:47,130 --> 00:06:50,070
‫Zastąpmy ten średnik znakiem równości.

90
00:06:50,460 --> 00:06:56,230
‫Następnie robimy parę nawiasów zdobądź właściciela, które zamierzamy zrobić Arrow.

91
00:06:56,370 --> 00:07:05,280
‫Więc będziemy wywoływać funkcję dla aktora będącego właścicielem i będziemy pobierać lokalizację aktora, a następnie parę nawiasów i

92
00:07:05,760 --> 00:07:08,310
‫średnika, aby to zakończyć.

93
00:07:08,640 --> 00:07:12,330
‫To daje nam aktualną lokalizację aktora będącego właścicielem.

94
00:07:12,870 --> 00:07:14,790
‫A co z naszą docelową lokalizacją?

95
00:07:15,030 --> 00:07:18,390
‫Cóż, wiemy, że mamy właściwość zwaną Przesunięciem Przesunięcia.

96
00:07:18,780 --> 00:07:20,760
‫Więc to będzie dotyczyć tutaj.

97
00:07:21,120 --> 00:07:26,400
‫Ale musimy dodać oryginalną lokalizację do tego przesunięcia ruchu.

98
00:07:26,910 --> 00:07:32,580
‫W tym celu musimy uchwycić oryginalną lokalizację na początku gry.

99
00:07:32,940 --> 00:07:34,830
‫Więc potrzebujemy zmiennego sklepu.

100
00:07:34,830 --> 00:07:35,940
‫Przejdźmy więc do naszego wojska.

101
00:07:35,970 --> 00:07:38,970
‫H I nie będzie to nigdzie edytowane.

102
00:07:38,970 --> 00:07:46,320
‫Więc zamierzam umieścić to we właściwościach wartości, będzie to wektor F zwany oryginalną lokalizacją.

103
00:07:47,280 --> 00:07:50,360
‫Nie zamierzamy tutaj ustawiać niczego, co przeniesiemy do naszych filmów.

104
00:07:50,360 --> 00:07:57,630
‫CP Into Begin Play, usuń ten wiersz komentarza i umieść nasz własny

105
00:07:58,290 --> 00:08:08,610
‫kod, który będzie oznaczał, że oryginalna lokalizacja jest równa pobraniu strzałki właściciela nawiasu i lokalizacji aktora w ten sposób.

106
00:08:08,850 --> 00:08:13,050
‫Więc teraz, gdy mamy przechwyconą naszą pierwotną lokalizację i zaczynamy grę, możemy jej użyć w technologii.

107
00:08:13,380 --> 00:08:21,840
‫Więc przejdź do tiku i ustawimy naszą docelową lokalizację równą oryginalnej lokalizacji plus przesunięcie przesunięcia.

108
00:08:21,840 --> 00:08:23,340
‫To jest nasza lokalizacja docelowa.

109
00:08:23,880 --> 00:08:29,550
‫I na koniec, przy prędkości, cóż, jest to zasadniczo odległość, którą musimy przebyć,

110
00:08:29,550 --> 00:08:32,550
‫podzielona przez czas, który musimy przebyć.

111
00:08:32,580 --> 00:08:38,760
‫Więc jeśli mamy lokalizację docelową i mamy oryginalną lokalizację, musimy znaleźć odległość

112
00:08:38,760 --> 00:08:44,970
‫między tymi dwoma, co możemy zrobić za pomocą kolumny wektora f, odległość dwukropka.

113
00:08:45,300 --> 00:08:54,450
‫Następnie przechodzimy do nawiasów, oryginalnej lokalizacji i docelowej lokalizacji.

114
00:08:55,050 --> 00:08:58,230
‫To daje nam odległość między tymi dwoma wektorami.

115
00:08:58,230 --> 00:09:05,130
‫A potem podzielimy to przez to, co mieliśmy i wyprowadziliśmy się, zwane czasem przeprowadzki.

116
00:09:05,850 --> 00:09:08,700
‫To daje nam prędkość, z jaką powinniśmy się poruszać.

117
00:09:09,360 --> 00:09:13,650
‫A teraz możemy użyć ich jako argumentów do naszej stałej przecięcia V do.

118
00:09:14,070 --> 00:09:20,430
‫Więc najpierw musimy podać aktualną lokalizację, a następnie lokalizację docelową.

119
00:09:21,210 --> 00:09:27,180
‫Następnie powiemy, że jest to czas Delta, który jest już parametrem w składniku tiku.

120
00:09:27,180 --> 00:09:28,530
‫Więc po prostu musimy to przejść.

121
00:09:29,580 --> 00:09:31,800
‫A potem mamy prędkość przechwycenia.

122
00:09:31,890 --> 00:09:36,570
‫Więc po prostu przejedziemy prędkość jak średnik na końcu tej linii.

123
00:09:37,230 --> 00:09:40,350
‫I to jest w zasadzie nowa lokalizacja.

124
00:09:40,350 --> 00:09:49,110
‫Więc zapiszmy to w nowym wektorze zmiennym zwanym nową lokalizacją równą temu.

125
00:09:49,530 --> 00:09:49,890
‫Fajny.

126
00:09:50,520 --> 00:09:54,270
‫Teraz musimy coś zrobić z tą nową lokalizacją, ponieważ samo obliczenie jej

127
00:09:54,280 --> 00:09:57,720
‫nie jest dobre, naprawdę musimy przenieść aktora do nowej lokalizacji.

128
00:09:58,380 --> 00:09:59,320
‫Więc to właśnie zamierzamy zrobić.

129
00:09:59,340 --> 00:10:03,690
‫Zadzwonimy do tego, aby zdobyć właściciela, abyśmy mogli go zdobyć.

130
00:10:04,730 --> 00:10:06,380
‫Nawiasy Strzałka.

131
00:10:06,770 --> 00:10:15,590
‫A potem zrobimy ustaloną lokalizację aktora i przejdziemy do nowej lokalizacji, tak jak to, i będziemy mieli średnik

132
00:10:15,590 --> 00:10:17,510
‫na końcu wiersza.

133
00:10:18,110 --> 00:10:20,720
‫Więc chodźmy dalej i skompilujmy to i zobaczmy, czy działa.

134
00:10:21,080 --> 00:10:24,470
‫Jeśli więc przejdziemy do lochu, wybierz ścianę, którą chcemy przenieść.

135
00:10:24,500 --> 00:10:30,530
‫Możesz teraz zobaczyć, że komponent mover ma przesunięcie ruchu, co zamierzam zrobić

136
00:10:30,530 --> 00:10:35,150
‫w kierunku Z i myślę, że zrobię -600.

137
00:10:36,050 --> 00:10:38,780
‫A potem czas ruchu, 4 sekundy, powinien być w porządku.

138
00:10:38,930 --> 00:10:42,860
‫Więc zapiszmy to, a następnie włączmy odtwarzanie i zobaczmy, czy się poruszy.

139
00:10:43,130 --> 00:10:43,960
‫Więc się nie porusza.

140
00:10:44,000 --> 00:10:49,790
‫W dzienniku wyjściowym jest błąd mówiący, że mobilność aktora została ustawiona na statyczną, dlatego nie może

141
00:10:50,090 --> 00:10:51,110
‫się poruszać.

142
00:10:51,470 --> 00:10:59,720
‫Jeśli więc ponownie wybierzemy aktora i przyjrzymy się jego ustawieniom mobilności, zobaczysz, że ustawienia mobilności statycznego komponentu siatki, więc

143
00:10:59,720 --> 00:11:03,890
‫wybierz statyczny komponent siatki, a następnie spójrz na mobilność.

144
00:11:03,890 --> 00:11:05,600
‫Widać, że jest ustawiony na statyczne okazy.

145
00:11:05,630 --> 00:11:06,470
‫Nie wolno się ruszać.

146
00:11:06,850 --> 00:11:09,980
‫Zmieńmy to na ruchome, ponieważ chcemy, aby się poruszało.

147
00:11:10,370 --> 00:11:11,750
‫A potem chodźmy dalej i włączmy odtwarzanie.

148
00:11:11,990 --> 00:11:18,120
‫Teraz w ciemności widać, że wojna się kończyła, co jest idealne.

149
00:11:18,170 --> 00:11:23,470
‫Myślę, że mamy ruch gdzieś indziej, jak widać na tym filarze tutaj, który również próbuje się poruszyć.

150
00:11:23,480 --> 00:11:24,470
‫Więc nie róbmy tego.

151
00:11:24,740 --> 00:11:28,810
‫Usuńmy move, komponent, który dodaliśmy tam tylko do testów.

152
00:11:29,690 --> 00:11:32,480
‫I nie powinno dać nam żadnych błędów w logu wyjściowym.

153
00:11:32,480 --> 00:11:38,270
‫Jeśli teraz zaczniemy grać w trafienia, powinniśmy po prostu opuścić tę ścianę do docelowej lokalizacji.

154
00:11:38,480 --> 00:11:42,850
‫Więc rzućmy Ci wyzwanie, abyś poruszał się za pomocą wartości logicznej, którą stworzyliśmy, że jesteś własnością.

155
00:11:42,860 --> 00:11:48,710
‫Więc zamierzasz owinąć kod odpowiednią instrukcją if i odpowiednim kodem, aby przenosił platformę

156
00:11:48,710 --> 00:11:52,460
‫tylko wtedy, gdy ta wartość logiczna jest prawdziwa.

157
00:11:53,090 --> 00:11:58,490
‫A potem ponownie skompilujesz kod i odtworzysz eject za pomocą F osiem, a potem zmienisz wartość logiczną,

158
00:11:58,490 --> 00:12:02,390
‫obserwujesz plat i sprawdzasz, czy się porusza, gdy sprawdzasz tę wartość logiczną.

159
00:12:02,390 --> 00:12:04,160
‫Więc zatrzymaj wideo i spróbuj.

160
00:12:07,290 --> 00:12:07,710
‫Dobra.

161
00:12:07,710 --> 00:12:08,430
‫Witamy spowrotem.

162
00:12:08,460 --> 00:12:14,790
‫Więc chodźmy i zapakujmy te elementy techniczne w zdanie if, nie super, ale wszystko inne, co zamierzamy

163
00:12:14,790 --> 00:12:15,300
‫zrobić.

164
00:12:15,300 --> 00:12:24,390
‫Jeśli powinno się przenieść i otworzyć kilka nawiasów i przenieść cały ten kod, pamiętając o wcięciu go o jeden poziom, ponieważ jesteśmy w

165
00:12:24,390 --> 00:12:29,550
‫nawiasach i chcemy pokazać, że zostanie to wykonane tylko w instrukcji if.

166
00:12:29,550 --> 00:12:36,450
‫Ułatw nam odczytanie kontroli wszystkich kompilacji Taft elevens, a następnie powinniśmy być w stanie przejść i

167
00:12:36,450 --> 00:12:42,060
‫nacisnąć przycisk odtwarzania i nacisnąć F8, aby wysunąć, jeśli przechwyciliśmy naszą mysz.

168
00:12:42,720 --> 00:12:49,110
‫A potem wejdziemy, aby spojrzeć na nasz zarys i spróbujemy znaleźć ścianę.

169
00:12:49,410 --> 00:12:56,310
‫Albo możemy po prostu kliknąć scenę, a następnie wybierzemy nasz ruch, komponent i sprawdzimy, czy powinien się poruszać,

170
00:12:56,310 --> 00:13:00,300
‫a gdy to się stanie, ściana zacznie się poruszać.

171
00:13:00,570 --> 00:13:01,290
‫Świetna sprawa.

172
00:13:01,290 --> 00:13:03,330
‫Do zobaczenia na następnym wykładzie.

