﻿1
00:00:04,380 --> 00:00:05,570
‫Cześć i witaj.

2
00:00:05,580 --> 00:00:11,880
‫W tym wykładzie będziemy obliczać odległość, jaką nasza platforma przebyła od początkowej lokalizacji,

3
00:00:11,880 --> 00:00:17,550
‫i wyświetlać ją w edytorze, abyśmy mogli ją sprawdzić i debugować.

4
00:00:17,850 --> 00:00:19,650
‫Zanurzmy się i zobaczmy, jak to się robi.

5
00:00:20,720 --> 00:00:26,810
‫Widzieliśmy więc, że możemy zaimplementować pierwszą część pseudokodu.

6
00:00:26,810 --> 00:00:30,020
‫Napisaliśmy, że platforma MOVE działa teraz.

7
00:00:30,020 --> 00:00:33,650
‫Jest to więc platforma odsyłająca, której jeszcze nie omówiliśmy.

8
00:00:34,250 --> 00:00:38,750
‫A pierwszy komentarz możecie zobaczyć tam, sprawdźcie, jak daleko się posunęliśmy.

9
00:00:39,320 --> 00:00:44,630
‫Jak więc mamy sprawdzić, jak daleko posunęliśmy się od początku gry?

10
00:00:44,960 --> 00:00:46,400
‫Cóż, są na to dwa składniki.

11
00:00:46,400 --> 00:00:51,890
‫Przede wszystkim musimy obliczyć różnicę między dwoma wektorami i odległość między nimi.

12
00:00:52,340 --> 00:00:57,440
‫Inną rzeczą, którą musimy wymyślić, jest to, jak śledzić, od czego zaczęliśmy.

13
00:00:57,440 --> 00:01:00,410
‫Cóż, pierwsza część jest stosunkowo prosta.

14
00:01:00,410 --> 00:01:08,150
‫Na szczęście wszystko, co musimy tam zrobić, to przejść do naszej ruchomej platformy Dot H i chcemy utworzyć tutaj nową

15
00:01:08,150 --> 00:01:12,050
‫zmienną, ale nie taką, która jest wystawiona na plany.

16
00:01:12,050 --> 00:01:19,010
‫Tym razem jest to tylko zmienna tylko dla C++, więc nie musimy umieszczać nad nią nowej właściwości.

17
00:01:19,550 --> 00:01:27,680
‫I będzie to wektor F zwany pozycją początkową lub lokalizacją, aby użyć tej samej terminologii, co w

18
00:01:27,680 --> 00:01:28,430
‫Unreal.

19
00:01:29,000 --> 00:01:33,980
‫I nie zamierzamy ustawiać tego na żadną wartość od razu, ponieważ nie miałoby to żadnego sensu.

20
00:01:33,980 --> 00:01:34,790
‫Lokalizacja początkowa.

21
00:01:34,790 --> 00:01:39,380
‫Jeszcze tego nie wiemy, ale poznamy to w Begin Play.

22
00:01:39,410 --> 00:01:40,730
‫Więc to właśnie zamierzamy zrobić.

23
00:01:40,730 --> 00:01:44,960
‫Po superzakładzie na żywo przejdziemy do C++ Olympic na żywo.

24
00:01:45,230 --> 00:01:51,050
‫Ustawimy naszą lokalizację początkową, abyśmy mogli powiedzieć lokalizację początkową.

25
00:01:51,380 --> 00:01:57,200
‫Pamiętam, że nie umieszczamy tu wektora przed tym, ponieważ próbujemy odwołać się do

26
00:01:57,200 --> 00:02:00,230
‫zmiennej klasy, zamiast tworzyć zmienną lokalną.

27
00:02:00,620 --> 00:02:07,310
‫Tak więc ustawimy tę lokalizację początkową równą lokalizacji aktu GET, ponieważ na początku gry

28
00:02:07,520 --> 00:02:09,590
‫aktor jest na początku.

29
00:02:09,800 --> 00:02:15,530
‫Więc ustawiliśmy lokalizację początkową, a to oznacza, że mamy zmienną, która trwa przez całą instancję tej klasy,

30
00:02:15,530 --> 00:02:18,440
‫więc możemy jej użyć ponownie i również wziąć.

31
00:02:18,920 --> 00:02:21,650
‫I mamy zmienną, którą możemy spróbować znaleźć odległość między nimi.

32
00:02:21,650 --> 00:02:27,590
‫Możemy powiedzieć, Hej, o ile aktualna lokalizacja odbiegała od tej początkowej lokalizacji?

33
00:02:27,590 --> 00:02:32,750
‫Cóż, aby móc to zrobić, muszę dodać trochę więcej składni C++ do naszego glosariusza.

34
00:02:32,750 --> 00:02:38,510
‫Po pierwsze, będzie się nazywał Operator Rozdzielczości Zasięgu, co jest nieco mylące, ale w

35
00:02:38,840 --> 00:02:44,120
‫rzeczywistości jest to operator podwójnego dwukropka, który widzieliśmy wcześniej w pliku C++.

36
00:02:44,630 --> 00:02:51,950
‫I zasadniczo wszystko, co robi, to pozwala zajrzeć do wnętrza klasy w taki sam sposób, jak operator

37
00:02:52,220 --> 00:02:55,430
‫DOT, pozwala zajrzeć do wnętrza instancji klasy.

38
00:02:55,430 --> 00:02:57,740
‫Przyjrzyjmy się więc temu bardziej szczegółowo.

39
00:02:58,160 --> 00:03:04,940
‫Wiemy, że funkcja tick należy do klasy ruchomej platformy, ale nie należy do żadnej konkretnej instancji

40
00:03:04,940 --> 00:03:06,140
‫tej klasy.

41
00:03:06,140 --> 00:03:12,950
‫Wszystkie instancje ruchomej platformy mają tę samą implementację ticka, co oznacza bycie

42
00:03:12,950 --> 00:03:13,580
‫klasą.

43
00:03:13,850 --> 00:03:21,020
‫Tak więc operator rozpoznawania zasięgu między ruchomą platformą a tikiem w rzeczywistości mówi nam, że jest

44
00:03:21,020 --> 00:03:24,380
‫to tik należący do klasy ruchomej platformy.

45
00:03:24,380 --> 00:03:30,800
‫W ten sam sposób, jak poprzednio, używaliśmy operatora kropki, aby uzyskać x, który należy do bieżącej

46
00:03:30,800 --> 00:03:31,550
‫lokalizacji.

47
00:03:32,060 --> 00:03:39,650
‫Bieżąca lokalizacja była konkretną instancją wektora F, ale możemy użyć tego do przechwycenia funkcji

48
00:03:39,650 --> 00:03:46,160
‫należących do klasy wektora i nie działających na konkretnej instancji tej klasy.

49
00:03:46,460 --> 00:03:50,450
‫Jednym z przykładów jest określenie odległości między dwoma wektorami.

50
00:03:50,450 --> 00:03:56,930
‫Sposób, w jaki robimy to w Unreal, polega na użyciu funkcji znajdującej się w klasie wektora.

51
00:03:56,930 --> 00:04:04,970
‫Więc zrobilibyśmy wektor F, a następnie dwukropek, aby zajrzeć do wnętrza tej klasy, jakie funkcje ma dla nas dostępne i

52
00:04:04,970 --> 00:04:07,070
‫przez które możemy przejrzeć.

53
00:04:07,070 --> 00:04:11,450
‫A teraz zwracam tylko uwagę na autouzupełnianie, które pojawia się w tym momencie.

54
00:04:11,450 --> 00:04:17,270
‫Nie wspominałem o tym w przeszłości, ale kiedy wykonujemy te operacje, tak naprawdę staramy

55
00:04:17,270 --> 00:04:23,480
‫się być sprytni i powiedzieć nam, jakie funkcje są dostępne w całej tej klasie wektorów f.

56
00:04:23,810 --> 00:04:25,280
‫I widać, że jest ich całkiem sporo.

57
00:04:25,280 --> 00:04:29,690
‫Ten, którego szukamy, nazywa się Dist Short na odległość.

58
00:04:29,840 --> 00:04:34,850
‫Teraz zauważysz również, że istnieje jeden, który faktycznie nazywa się odległością i jest właściwie synonimem.

59
00:04:34,850 --> 00:04:39,950
‫Moglibyśmy użyć jednego z nich, ale użyję krótszego, aby kod był bardziej

60
00:04:39,950 --> 00:04:42,380
‫zwięzły i możemy otworzyć nawiasy.

61
00:04:42,680 --> 00:04:50,180
‫I znowu, autouzupełnianie przychodzi nam z pomocą, ponieważ mówi nam, co przyjmuje jako argumenty.

62
00:04:50,180 --> 00:04:57,110
‫Widzimy, że pierwszy argument jest wektorem trzyD, a drugi jest również efektem 3D.

63
00:04:57,320 --> 00:05:03,410
‫Więc fakt, że nazywa się tutaj Factor 3D, jest trochę dziwny, ale zasadniczo prosi o wektor

64
00:05:03,410 --> 00:05:04,160
‫F.

65
00:05:04,430 --> 00:05:08,720
‫Oznacza to, że jeśli przekażesz dwa argumenty, oba są czynnikami.

66
00:05:09,110 --> 00:05:15,080
‫Powiem ci, że moja wartość zwrotu, czyli ten bit po lewej stronie, będzie podwójną.

67
00:05:15,110 --> 00:05:18,590
‫Teraz podwójna jest zasadniczo po prostu dokładniejszym floatem.

68
00:05:18,590 --> 00:05:20,000
‫Więc możemy zasadniczo powiedzieć.

69
00:05:20,280 --> 00:05:22,230
‫To jest pływak wychodzący stąd.

70
00:05:22,230 --> 00:05:25,710
‫Wyrażenie, które stworzyliśmy, tworzy pływak.

71
00:05:26,550 --> 00:05:27,000
‫Niesamowite.

72
00:05:27,030 --> 00:05:32,450
‫Więc zamierzamy spróbować znaleźć odległość między miejscem startu.

73
00:05:32,460 --> 00:05:36,450
‫Więc jako pierwszy argument wpiszemy lokalizację początkową.

74
00:05:36,720 --> 00:05:40,440
‫A potem druga będzie obecną lokalizacją.

75
00:05:40,950 --> 00:05:45,300
‫Teraz nie martw się, na tym etapie nie ma znaczenia, w jaki sposób ułożymy tę rundę,

76
00:05:45,300 --> 00:05:47,550
‫ponieważ odległość między dwoma wektorami będzie taka sama.

77
00:05:47,550 --> 00:05:51,990
‫Niezależnie od tego, czy zaczynasz od punktu A do B, czy od B do A, zawsze będzie to ta sama odległość.

78
00:05:52,440 --> 00:05:54,510
‫Więc moglibyśmy umieścić je tak czy inaczej, jeśli chcesz.

79
00:05:55,140 --> 00:05:59,310
‫Więc teraz mamy wyrażenie, które zwraca liczbę zmiennoprzecinkową.

80
00:05:59,580 --> 00:06:05,430
‫Chciałbym więc zachęcić Cię do zaktualizowania nowej właściwości za pomocą tego wyrażenia, abyśmy mogli zobaczyć, jaka

81
00:06:05,430 --> 00:06:06,600
‫jest jej wartość.

82
00:06:07,020 --> 00:06:13,380
‫Więc stwórz nową własność zmiennoprzecinkową i nazwij ją jak chcesz, a następnie uaktualnij to w każdym

83
00:06:13,380 --> 00:06:19,350
‫ujęciu wartością f vector dest, a następnie zagraj w grę i zobacz, co się stanie.

84
00:06:19,350 --> 00:06:21,660
‫Czy otrzymujesz wyniki, których oczekiwałeś?

85
00:06:21,690 --> 00:06:24,420
‫Czy zwiększa się tak szybko, jak byś się spodziewał?

86
00:06:24,750 --> 00:06:26,460
‫Wstrzymaj wideo i spróbuj.

87
00:06:29,800 --> 00:06:30,310
‫Dobra.

88
00:06:30,310 --> 00:06:30,940
‫Witamy spowrotem.

89
00:06:30,970 --> 00:06:34,480
‫Więc najpierw stworzymy nową nieruchomość.

90
00:06:34,810 --> 00:06:40,280
‫Więc zamierzam umieścić to nad naszą lokalizacją początkową, aby zgrupować wszystkie nieruchomości razem.

91
00:06:40,280 --> 00:06:45,550
‫Mam zamiar mieć nową edycję właściwości w dowolnym miejscu, fakty.

92
00:06:45,550 --> 00:06:47,050
‫Nie musimy być w stanie tego edytować.

93
00:06:47,050 --> 00:06:51,400
‫Więc możesz sobie wyobrazić, że gdziekolwiek oznacza, że możesz to edytować.

94
00:06:51,700 --> 00:06:59,320
‫Cóż, mamy też widoczne miejsce, które nie pozwala nam go edytować, ale pozwala go zobaczyć.

95
00:06:59,410 --> 00:07:01,030
‫Więc tego użyję zamiast tego.

96
00:07:01,330 --> 00:07:05,320
‫Dla uproszczenia zostawię tę kategorię wyłączoną, ponieważ używamy tej zmiennej tylko po to, aby

97
00:07:05,320 --> 00:07:06,910
‫móc zobaczyć, co się dzieje.

98
00:07:07,240 --> 00:07:13,270
‫Jak wspomniałem, będzie to typ zmiennoprzecinkowy i nazwę to przesuniętą odległością, aby było jasne,

99
00:07:13,270 --> 00:07:15,820
‫na co patrzymy w inspektorze.

100
00:07:16,180 --> 00:07:22,300
‫Ustawię jego wartość domyślną na minus jeden tylko po to, byśmy wiedzieli, że ją zaktualizowaliśmy.

101
00:07:22,300 --> 00:07:25,000
‫Jeśli wyświetla się minus jeden, wiemy, że aktualizacja nie przeszła.

102
00:07:25,600 --> 00:07:27,190
‫Więc zamierzam wziąć ten dystans przeniesiony.

103
00:07:27,580 --> 00:07:33,880
‫Przejdziemy do naszej implementacji, weźmiemy i ustawimy odległość przesuniętą na równą, aby

104
00:07:33,880 --> 00:07:36,700
‫wpłynąć na odległość okrężnicy.

105
00:07:36,700 --> 00:07:41,590
‫Używając tego operatora rozdzielczości zasięgu, aby uzyskać funkcję odległości, a następnie

106
00:07:41,590 --> 00:07:42,970
‫zakończyć linię średnikiem.

107
00:07:43,540 --> 00:07:44,050
‫Spoko loko.

108
00:07:44,050 --> 00:07:50,620
‫Więc przejdziemy do Unreal, wciśniemy przycisk kompilacji i możemy zamknąć terminal.

109
00:07:50,800 --> 00:07:55,570
‫Powinniśmy zobaczyć, jak ta odległość się przesunęła, pokazując minus jeden.

110
00:07:55,570 --> 00:08:00,580
‫Widzisz, że jest wyszarzone, ponieważ nie mogę go edytować, ponieważ jest widoczny, a mimo to nie edytować.

111
00:08:01,210 --> 00:08:07,390
‫Więc chodźmy dalej i włączmy odtwarzanie, a my będziemy musieli upewnić się, że wybraliśmy

112
00:08:07,390 --> 00:08:12,910
‫ruchomą platformę w zarysie i możemy spojrzeć na przebytą tutaj odległość i widać,

113
00:08:12,910 --> 00:08:17,950
‫że nieruchomość szybko zajmuje około 1 do 300 na sekundę.

114
00:08:17,950 --> 00:08:24,160
‫A więc idzie z prędkością, jakiej bym się spodziewał, czyli 100 na sekundę.

115
00:08:24,170 --> 00:08:25,780
‫Więc wygląda na sukces.

116
00:08:25,780 --> 00:08:30,790
‫Udało nam się obliczyć przebytą odległość, a także ją zwizualizować.

117
00:08:30,850 --> 00:08:31,390
‫Świetna sprawa.

118
00:08:31,390 --> 00:08:32,980
‫Do zobaczenia na następnym wykładzie.

