﻿1
00:00:04,460 --> 00:00:05,430
‫Cześć i witaj.

2
00:00:05,430 --> 00:00:11,630
‫W tym wykładzie przyjrzymy się, jak możemy ustawić ruchomą platformę za pomocą prędkości wektora w jej

3
00:00:11,630 --> 00:00:12,650
‫zmiennych składowych.

4
00:00:12,980 --> 00:00:18,680
‫I przyjrzymy się, jak możemy uniezależnić jego liczbę klatek na sekundę za pomocą czegoś, co nazywa się

5
00:00:18,680 --> 00:00:19,550
‫czasem delta.

6
00:00:19,550 --> 00:00:20,660
‫OK, zanurkujmy.

7
00:00:21,260 --> 00:00:27,900
‫Do tego momentu aktualizowaliśmy tylko jeden składnik naszego wektora na raz.

8
00:00:28,310 --> 00:00:31,010
‫A co jeśli powiem ci, że nie musimy tego robić w ten sposób?

9
00:00:31,010 --> 00:00:35,840
‫A co, jeśli możemy po prostu zaktualizować cały wektor o określoną wartość za jednym razem?

10
00:00:36,230 --> 00:00:36,890
‫Cóż, możemy.

11
00:00:36,920 --> 00:00:41,390
‫Wektory można dodawać do innych czynników, jeśli widzieliśmy w poprzedniej sekcji.

12
00:00:41,390 --> 00:00:47,180
‫Więc co możemy zrobić, to przejść do naszej ruchomej platformy do H i stworzyć coś, co

13
00:00:47,180 --> 00:00:53,300
‫jest naszą ruchomą platformą, wektor prędkości, który mówi nam zarówno kierunek, jak i prędkość, z jaką chcemy iść.

14
00:00:53,690 --> 00:01:01,100
‫Więc sposób, w jaki to robimy, polega na utworzeniu dość znajomego już U właściwości i zamierzamy go

15
00:01:01,280 --> 00:01:07,520
‫edytować w dowolnym miejscu, aby był widoczny w inspektorze, a następnie będzie to wektor

16
00:01:07,520 --> 00:01:15,710
‫typu F, tak jak to zrobiliśmy wcześniej, i nazwiemy to prędkością platformy i na razie możemy jej coś nadać.

17
00:01:15,710 --> 00:01:23,060
‫Więc zrobimy konstruktor wektora F, a potem po prostu damy mu setki w składniku X i zero i zero

18
00:01:23,060 --> 00:01:26,720
‫w pozostałych, a następnie średnik, aby to zakończyć.

19
00:01:27,110 --> 00:01:32,900
‫I chcę wam pokazać jeszcze jedną sztuczkę, która polega na tym, że wraz z edycją, gdziekolwiek możemy umieścić

20
00:01:32,900 --> 00:01:35,210
‫kolejne argumenty oddzielone przecinkami do tego U.

21
00:01:35,210 --> 00:01:38,390
‫Właściwość, która wygląda trochę jak funkcja.

22
00:01:38,390 --> 00:01:46,100
‫Właściwie możesz umieścić kategorię, która nazywa się kategorią przez duże C, a następnie wstawić znak równości.

23
00:01:46,100 --> 00:01:50,810
‫I zwykle nie zostawiam spacji między tymi znakami równości kategoria równa.

24
00:01:50,810 --> 00:01:54,110
‫A potem możesz podać kategorię, którą chcesz pokazać.

25
00:01:54,440 --> 00:01:58,160
‫Tutaj możesz zobaczyć kategorie dla replikacji renderowania transformacji.

26
00:01:58,160 --> 00:02:03,020
‫To są rodzaje kategorii, które mamy na myśli. Zamierzam nazwać swoją ruchomą platformę, aby mieć rodzaj

27
00:02:03,020 --> 00:02:05,840
‫ruchomej platformy, w której można umieścić te zmienne.

28
00:02:05,990 --> 00:02:10,370
‫I zauważ, że wokół tej kategorii używam podwójnych cudzysłowów.

29
00:02:10,670 --> 00:02:11,840
‫To jest poprawna składnia.

30
00:02:11,840 --> 00:02:13,010
‫Musisz je uwzględnić.

31
00:02:13,790 --> 00:02:22,700
‫A potem możemy zrobić użytek z tej nowej zmiennej składowej w C++.

32
00:02:22,700 --> 00:02:29,480
‫Więc zamiast ustawiać składnik X bieżącej lokalizacji, pozwólcie, że całkowicie usunę tę

33
00:02:29,480 --> 00:02:42,080
‫linię i przepiszę ją, ponieważ bieżąca lokalizacja jest równa bieżącej lokalizacji plus prędkość platformy, na przykład umieść średnik na końcu linii i

34
00:02:42,080 --> 00:02:48,590
‫przejdźmy do Unreal i naciśnij kompiluj i zobacz, jak to działa.

35
00:02:48,770 --> 00:02:50,480
‫Więc to zostało pomyślnie skompilowane.

36
00:02:50,480 --> 00:02:56,630
‫I widzicie, że teraz mam tę sekcję ruchomej platformy na mojej ruchomej platformie z prędkością platformy i

37
00:02:56,630 --> 00:02:59,120
‫jej składową x ustawioną na 100.

38
00:02:59,120 --> 00:03:00,770
‫Co się stanie, jeśli pójdę i zagram?

39
00:03:00,920 --> 00:03:05,810
‫Cóż, platforma przyspiesza szybko na odległość, ponieważ dodam sto jednostek na każdą

40
00:03:05,810 --> 00:03:06,260
‫klatkę.

41
00:03:06,620 --> 00:03:07,940
‫To dużo.

42
00:03:08,210 --> 00:03:13,760
‫Ale chcę, żeby poruszał się z prędkością około 100 centymetrów na sekundę.

43
00:03:13,760 --> 00:03:14,960
‫To tylko jeden metr na sekundę.

44
00:03:14,960 --> 00:03:16,310
‫Nie jest bardzo szybki.

45
00:03:16,700 --> 00:03:18,860
‫Więc dlaczego to idzie tak szybko?

46
00:03:18,980 --> 00:03:20,390
‫Cóż, z powodu mojej liczby klatek na sekundę.

47
00:03:20,390 --> 00:03:23,810
‫Cóż, gdybym był na wolniejszym systemie, poruszałby się wolniej.

48
00:03:23,810 --> 00:03:25,880
‫A gdybym był na szybszym systemie, poruszałby się szybciej.

49
00:03:25,880 --> 00:03:26,960
‫To wydaje się nie mieć sensu.

50
00:03:27,320 --> 00:03:29,900
‫Porozmawiajmy więc o wykorzystaniu czasu Delta.

51
00:03:29,900 --> 00:03:31,190
‫Co to jest czas delta?

52
00:03:31,760 --> 00:03:38,900
‫Cóż, użycie czasu delta w Unreal może nam powiedzieć, ile czasu zajęło wykonanie każdej klatki, było to czas delta.

53
00:03:38,900 --> 00:03:45,650
‫Cóż, jeśli przejdziesz do kodu programu Visual Studio, zobaczysz, że czas delta jest zmienną wymienioną tutaj

54
00:03:45,650 --> 00:03:46,610
‫na początku.

55
00:03:46,610 --> 00:03:49,280
‫W rzeczywistości jest to parametr wejściowy.

56
00:03:49,280 --> 00:03:51,500
‫To dane wejściowe do naszej funkcji.

57
00:03:51,770 --> 00:03:52,970
‫Więc możemy go tutaj użyć.

58
00:03:53,150 --> 00:03:58,160
‫Zasadniczo, tak jak używamy zmiennej lokalnej, możemy jej użyć w ciele funkcji tick.

59
00:03:58,940 --> 00:04:01,490
‫Mówi nam więc, ile czasu zajęło wykonanie klatki.

60
00:04:01,490 --> 00:04:02,570
‫Ale dlaczego to jest ważne?

61
00:04:02,570 --> 00:04:09,620
‫Ponieważ kiedy mnożymy coś przez czas delta, zasadniczo czyni to niezależną liczbę klatek na sekundę w naszej grze, co w

62
00:04:09,620 --> 00:04:14,570
‫zasadzie oznacza, że gra zachowuje się tak samo na szybkim lub wolnym komputerze.

63
00:04:14,690 --> 00:04:20,090
‫Spójrzmy więc na ilustracyjny przykład, jeśli chcę co sekundę przesuwać coś o jedną jednostkę

64
00:04:20,090 --> 00:04:20,930
‫w lewo.

65
00:04:21,410 --> 00:04:23,390
‫Oto jak by to wyglądało na różnych maszynach.

66
00:04:23,390 --> 00:04:24,290
‫Mam wolne obliczenia.

67
00:04:24,290 --> 00:04:29,780
‫Mogę zrobić tylko dziesięć klatek na sekundę na szybkim komputerze, który może zrobić 100 klatek na sekundę.

68
00:04:29,810 --> 00:04:32,570
‫Teraz czas trwania tych klatek jest inny.

69
00:04:32,570 --> 00:04:36,350
‫Tak więc na wolnym komputerze czas trwania klatki wynosi 0. 1 sekundy.

70
00:04:36,350 --> 00:04:42,590
‫Gdybym mógł zmieścić tylko dziesięć z nich w sekundę i na szybkim komputerze byłoby to . 01 sekundy, a więc znacznie mniej,

71
00:04:42,590 --> 00:04:45,320
‫ponieważ może wykonywać rzeczy szybciej.

72
00:04:45,320 --> 00:04:47,360
‫Obliczenie klatki nie trwa tak długo.

73
00:04:48,080 --> 00:04:54,290
‫Więc jeśli pomnożę przez czas trwania klatki, pomnożę moją jedną jednostkę przez czas trwania klatki.

74
00:04:54,590 --> 00:04:58,070
‫Wtedy zobaczysz to w 1/2.

75
00:04:58,070 --> 00:05:03,500
‫Więc jeśli wykonano dziesięć klatek, otrzymuję jedną jednostkę ruchu.

76
00:05:03,860 --> 00:05:05,090
‫I to samo jest prawdą.

77
00:05:05,090 --> 00:05:11,420
‫Jeśli wykonałem 100 klatek egzekucji, nadal otrzymuję jedną jednostkę ruchu.

78
00:05:11,450 --> 00:05:15,520
‫Więc chciałbym rzucić wyzwanie pomnożenia przez czas Delta.

79
00:05:15,530 --> 00:05:21,620
‫Więc będziemy pamiętać, że możemy pomnożyć wektory przez wartość zmiennoprzecinkową, aby

80
00:05:21,980 --> 00:05:23,720
‫przeskalować tę wielkość.

81
00:05:24,230 --> 00:05:29,110
‫A sposobem, w jaki możemy to zrobić w C++, jest użycie operatora gwiazdy.

82
00:05:29,120 --> 00:05:30,530
‫Tak robimy mnożenie.

83
00:05:30,530 --> 00:05:32,930
‫Nie ma operatora znaku mnożenia.

84
00:05:32,930 --> 00:05:37,820
‫Zostałby on pomylony z X, więc używamy operatora gwiazdy do oznaczenia mnożenia.

85
00:05:38,420 --> 00:05:41,900
‫I chciałbym, żebyście skompilowali i przetestowali swoje wyniki.

86
00:05:41,900 --> 00:05:45,710
‫Więc pomnóż przez czas delta, pomnóż prędkość przez czas delta i zobacz, co się stanie.

87
00:05:46,460 --> 00:05:47,600
‫Wstrzymaj, wideo i spróbuj.

88
00:05:50,690 --> 00:05:51,290
‫Dobra.

89
00:05:51,300 --> 00:05:51,940
‫Witamy spowrotem.

90
00:05:51,950 --> 00:05:54,800
‫Więc to prędkość platformy, którą chcemy tutaj pomnożyć.

91
00:05:55,370 --> 00:06:00,530
‫Teraz moglibyśmy wyciągnąć to do osobnej zmiennej, ale faktem jest, że możemy po prostu

92
00:06:00,770 --> 00:06:06,500
‫umieścić pomnożenie przez czas delta na końcu tej linii, oczywiście przed średnikiem, ponieważ jest przed końcem

93
00:06:06,500 --> 00:06:07,100
‫instrukcji.

94
00:06:07,790 --> 00:06:13,610
‫Ciekawe jest to, że mamy tu do czynienia z

95
00:06:13,610 --> 00:06:20,930
‫pewnym pierwszeństwem operatorów, ponieważ mnożenie prędkości platformy i czasu delty nastąpi przed dodaniem

96
00:06:20,960 --> 00:06:22,940
‫do bieżącej lokalizacji.

97
00:06:22,970 --> 00:06:27,850
‫Teraz jest to zgodne z normalnymi regułami matematycznymi dla pełnej listy tych reguł.

98
00:06:27,860 --> 00:06:33,470
‫Nie będę tu wchodzić w szczegóły, ale możesz zajrzeć na stronę z kolejnością

99
00:06:33,470 --> 00:06:35,330
‫operacji na Wikipedii.

100
00:06:35,570 --> 00:06:40,760
‫Istnieje wiele różnych zasad w różnych językach, niezależnie od tego, czy chodzi o masę ciała, masę łóżka, masę zwierzęcia,

101
00:06:40,760 --> 00:06:41,420
‫masę łóżka.

102
00:06:41,660 --> 00:06:43,010
‫Jest mnóstwo różnych akronimów.

103
00:06:43,010 --> 00:06:46,850
‫Więc niezależnie od tego, z którego dorastałeś, polecam go.

104
00:06:47,060 --> 00:06:50,180
‫Dla mnie to była masa ciała, ale wiesz, w innych miejscach jest inaczej.

105
00:06:50,540 --> 00:06:55,070
‫Warto więc zauważyć, że moglibyśmy tak po prostu napisać.

106
00:06:55,280 --> 00:07:00,380
‫Ale jeśli chcielibyśmy się upewnić, że coś wydarzy się w innej kolejności niż ta, możesz użyć

107
00:07:00,380 --> 00:07:02,030
‫nawiasów, aby to wskazać.

108
00:07:02,030 --> 00:07:07,460
‫Więc mógłbym, żeby wszystko było jaśniejsze, umieszczę to mnożenie w nawiasach, żeby pokazać, że

109
00:07:07,460 --> 00:07:08,930
‫tak się dzieje.

110
00:07:08,930 --> 00:07:12,920
‫Najpierw mnożenie, a następnie dodawanie do aktualnej lokalizacji.

111
00:07:13,580 --> 00:07:16,340
‫Przejdźmy więc do Unreal i przetestujmy to.

112
00:07:16,340 --> 00:07:19,370
‫Uderzymy, skompilujemy, a kiedy skończymy, włączmy odtwarzanie.

113
00:07:19,520 --> 00:07:24,350
‫A teraz widzimy, że platformy poruszają się z dużo bardziej normalną prędkością, ponieważ w rzeczywistości poruszają się z

114
00:07:24,350 --> 00:07:27,800
‫prędkością jednego metra na sekundę, co jest w porządku dla ruchomej platformy.

115
00:07:28,220 --> 00:07:35,540
‫Widać więc, że pomogło to nam obojgu zmniejszyć prędkość, ale teraz jest to szybkość klatek, niezależna

116
00:07:35,540 --> 00:07:36,110
‫prędkość.

117
00:07:36,470 --> 00:07:40,610
‫Gdyby mój komputer grał, ponieważ coś innego działo się w tle, to nadal wyglądałby

118
00:07:40,610 --> 00:07:43,460
‫tak samo i grałoby tak samo w grze.

119
00:07:43,490 --> 00:07:44,030
‫Świetna sprawa.

120
00:07:44,030 --> 00:07:46,370
‫Do zobaczenia na następnym wykładzie.

