﻿1
00:00:04,390 --> 00:00:05,230
‫Cześć i witaj.

2
00:00:05,230 --> 00:00:08,770
‫W tym wykładzie przyjrzymy się rzeczom z punktu widzenia gracza.

3
00:00:08,770 --> 00:00:15,010
‫W zasadzie będziemy zbierać widok gracza, położenie i obrót kamery, tak że

4
00:00:15,400 --> 00:00:20,980
‫gdy naciśniemy przycisk spustu, będziemy mogli narysować kamerę debugowania.

5
00:00:20,980 --> 00:00:26,680
‫Ci mali czerwoni tutaj, te małe czerwone pudełkowe kamery, które pokazują nam, gdzie jest ten wizjer.

6
00:00:27,010 --> 00:00:28,030
‫I możemy to potwierdzić.

7
00:00:28,030 --> 00:00:31,960
‫Możemy to później wykorzystać do śledzenia promieni dla pistoletu.

8
00:00:31,990 --> 00:00:34,750
‫Zanurzmy się i zobaczmy to wszystko w akcji.

9
00:00:36,230 --> 00:00:38,280
‫Zacznę ten wykład od pytania.

10
00:00:38,300 --> 00:00:45,800
‫Więc jeśli tak celujesz przez swój rzutnik i próbujesz wyrównać środek ekranu z centrum dowodzenia D

11
00:00:45,800 --> 00:00:50,810
‫na D lub zerowym centrum dowodzenia, cokolwiek to ma być.

12
00:00:51,350 --> 00:00:54,610
‫I mierzę, do czego bym dążył?

13
00:00:54,950 --> 00:00:56,150
‫Czego spodziewałbym się trafić?

14
00:00:56,570 --> 00:00:59,660
‫Możesz powiedzieć, cóż, spodziewałbym się, że osiągnie tę sumę zerową.

15
00:00:59,660 --> 00:01:01,010
‫Wydaje się, że to oczywista odpowiedź.

16
00:01:01,320 --> 00:01:06,080
‫Cóż, niekoniecznie to jest to, co zamierzasz osiągnąć, w zależności od tego, jak robisz rzeczy, jak

17
00:01:06,080 --> 00:01:06,950
‫robisz przekształcenie.

18
00:01:06,950 --> 00:01:11,030
‫Przyjrzyjmy się więc strategiom, które mamy do przekształcenia najbardziej oczywistych.

19
00:01:11,330 --> 00:01:15,880
‫Jak mówisz, no cóż, strzelamy z pistoletu, więc przerzucimy lufę pistoletu.

20
00:01:15,890 --> 00:01:20,390
‫A tak przy okazji, ta konfiguracja, która jest bardzo, bardzo prymitywna, to w zasadzie trzecia osoba.

21
00:01:20,390 --> 00:01:21,800
‫Mamy tu aparat.

22
00:01:21,800 --> 00:01:23,810
‫Mamy charakter, mamy broń.

23
00:01:23,810 --> 00:01:26,510
‫I próbuje strzelić do innego celu, tutaj.

24
00:01:26,990 --> 00:01:31,100
‫Cóż, przede wszystkim przebudowujemy broń jak ten uczeń.

25
00:01:31,310 --> 00:01:37,940
‫Może nie trafia, bo nasza kamera nie wskazuje tam, gdzie jest wycelowana broń, niekoniecznie.

26
00:01:38,150 --> 00:01:41,480
‫Chociaż mogą wskazywać w tym samym kierunku, są nieco odsunięte od siebie,

27
00:01:41,720 --> 00:01:43,940
‫więc niekoniecznie uderzą w te same rzeczy.

28
00:01:43,940 --> 00:01:48,170
‫Zamiast tego możesz wybrać, że chcesz przekonwertować z aparatu.

29
00:01:48,620 --> 00:01:54,530
‫Oznacza to, że to, na co patrzy kamera, będzie tym, co zostanie trafione i ogólnie wydaje się bardziej

30
00:01:54,530 --> 00:01:57,230
‫naturalne w grach z perspektywy trzeciej osoby.

31
00:01:57,740 --> 00:02:02,510
‫Kiedy grasz w grach pierwszoosobowych, sprawy stają się nieco bliższe, ponieważ często jesteś bardzo blisko

32
00:02:02,510 --> 00:02:02,930
‫beczki.

33
00:02:02,930 --> 00:02:07,070
‫Ale nawet w grach pierwszoosobowych ta zasada ma tendencję do bycia.

34
00:02:07,070 --> 00:02:10,760
‫Nie chcesz poruszać się w miejscu, w którym znajduje się punkt celowania na ekranie.

35
00:02:11,030 --> 00:02:16,940
‫Zazwyczaj masz mały fragment interfejsu użytkownika, który nakłada się tutaj na środku ekranu i tam

36
00:02:16,940 --> 00:02:18,620
‫zamierzasz celować w dół.

37
00:02:18,620 --> 00:02:24,710
‫I dlatego mamy tendencję do ponownego rzutowania bronią poprawnie rzuconą w tym oknie.

38
00:02:25,430 --> 00:02:32,330
‫Teraz na szczęście istnieje sposób, aby uzyskać ten widok i faktycznie robimy to z kontrolera,

39
00:02:32,330 --> 00:02:34,250
‫otrzymujemy widok kontrolera.

40
00:02:34,670 --> 00:02:41,690
‫Wymaga to od nas przejścia do postaci, znalezienia kontrolera postaci, a następnie odnalezienia jej położenia i

41
00:02:41,690 --> 00:02:44,000
‫rotacji w polu widzenia.

42
00:02:44,420 --> 00:02:50,480
‫W tym wykładzie zamierzamy spróbować zwizualizować i potwierdzić, że położenie i obrót okienka ekranu

43
00:02:50,480 --> 00:02:52,790
‫są tym, czego oczekiwalibyśmy.

44
00:02:53,270 --> 00:02:57,110
‫Zrobimy to, rysując pomocniki debugowania.

45
00:02:57,590 --> 00:03:05,120
‫Teraz pomocnicy debugowania znajdują się w pliku nagłówkowym, a nazwa nagłówka plików to add debug.

46
00:03:06,340 --> 00:03:06,760
‫Pomóż nam.

47
00:03:06,760 --> 00:03:10,440
‫Co zabawne, wierzę lub rysuję, rysuję, pomagam debugować.

48
00:03:10,550 --> 00:03:10,960
‫To jest ten.

49
00:03:11,620 --> 00:03:16,570
‫A jeśli przyjrzymy się temu F 12, aby przejść do pliku nagłówkowego, jeśli

50
00:03:16,570 --> 00:03:22,090
‫masz go już w swoich plikach dołączonych, poszukamy takiego, który nazywa się kamera debugowania rysowania kamery.

51
00:03:22,090 --> 00:03:26,620
‫A to rysuje coś, co wygląda trochę jak mój diagram, mały trójkąt

52
00:03:26,890 --> 00:03:29,170
‫lub bębenek, którego możemy użyć.

53
00:03:29,590 --> 00:03:31,070
‫Więc co to zajmie?

54
00:03:31,150 --> 00:03:37,600
‫I przyjmie światu lokalizację tej kamery, obrót tej kamery.

55
00:03:38,050 --> 00:03:41,780
‫A więc położenie, obrót, pole widzenia to zrobią.

56
00:03:41,800 --> 00:03:46,900
‫Ustawimy to prawdopodobnie na wartość domyślną, na przykład 90 stopni jako skalę, jako domyślny kolor.

57
00:03:46,900 --> 00:03:48,070
‫Wszystkie są zaległe.

58
00:03:48,070 --> 00:03:49,480
‫Więc możemy po prostu użyć tych wartości domyślnych.

59
00:03:50,110 --> 00:03:57,790
‫Spróbujmy więc narysować debugowanie kamery tutaj, w moim pistolecie, i umieścimy to w metodzie wyzwalania puli, ponieważ właśnie dlatego

60
00:03:57,820 --> 00:03:59,180
‫wykonujemy naszą pracę.

61
00:03:59,530 --> 00:04:01,800
‫Potrzebuje przede wszystkim, co to było?

62
00:04:01,810 --> 00:04:03,640
‫To był nowy świat.

63
00:04:04,060 --> 00:04:06,130
‫Więc otrzymujemy nasz świat.

64
00:04:07,420 --> 00:04:08,590
‫Musimy się wciągnąć.

65
00:04:08,950 --> 00:04:11,350
‫Następną rzeczą byłaby lokalizacja.

66
00:04:11,360 --> 00:04:20,950
‫Po prostu zdobądźmy na razie lokalizację aktora i zróbmy rotację aktorów.

67
00:04:22,090 --> 00:04:25,610
‫Ostatnią rzeczą, jakiej potrzebowaliśmy, było pole widzenia.

68
00:04:25,630 --> 00:04:33,250
‫Po prostu przejdźmy do 90-stopniowego pola widzenia, które jest tam po prostu losowe, i możemy iść dalej, skompilować i

69
00:04:33,250 --> 00:04:35,590
‫zobaczyć, czy to się pojawi.

70
00:04:36,340 --> 00:04:40,210
‫A potem zagrajmy i uderzmy.

71
00:04:41,200 --> 00:04:42,050
‫Przycisk wyzwalania.

72
00:04:42,070 --> 00:04:43,420
‫Nic tu nie widzę.

73
00:04:43,420 --> 00:04:46,810
‫Zróbmy F8 i zobaczmy, czy możemy się zbliżyć.

74
00:04:47,780 --> 00:04:48,270
‫Mm hmm.

75
00:04:48,490 --> 00:04:51,730
‫Nadal nie pokazuje tu żadnego aparatu.

76
00:04:51,740 --> 00:04:53,470
‫Zastanawiam się, czy jest naprawdę mały.

77
00:04:54,580 --> 00:05:00,430
‫Jedną z pozostałych opcji jest to, że możemy chcieć mieć trwałe linie.

78
00:05:01,180 --> 00:05:07,600
‫Oznacza to, że musimy określić wszystko aż do tego w C++, abyśmy mogli ustawić naszą skalę na jeden.

79
00:05:07,600 --> 00:05:14,290
‫Moglibyśmy nawet zwiększyć go do skali dwóch, na wypadek, gdyby to rozmiar był problemem, który możemy

80
00:05:14,410 --> 00:05:14,890
‫wybrać.

81
00:05:14,890 --> 00:05:16,900
‫Bardziej widocznym kolorem może być czerwony.

82
00:05:16,900 --> 00:05:18,730
‫Więc f perkal długi czerwony dwukropek.

83
00:05:19,510 --> 00:05:26,620
‫A potem możemy spróbować, aby trwałe linie były prawdziwe i wypróbować to.

84
00:05:26,620 --> 00:05:27,460
‫Położyć nacisk.

85
00:05:28,440 --> 00:05:29,640
‫Więc znowu kompiluję.

86
00:05:30,920 --> 00:05:32,540
‫I wskoczyć do gry.

87
00:05:33,290 --> 00:05:34,850
‫I tam idziemy.

88
00:05:34,910 --> 00:05:35,630
‫Uderzamy.

89
00:05:37,390 --> 00:05:44,410
‫Spust, i widać, że pokazuje małe pole kamery tutaj, w którym naciskamy spust, a

90
00:05:44,410 --> 00:05:50,230
‫jego obrót i położenie są ustalane przez pistolety, położenie i obrót.

91
00:05:50,350 --> 00:05:52,970
‫Więc teraz chcemy spróbować zamiast tego uzyskać widok.

92
00:05:52,990 --> 00:05:56,980
‫Więc jak już powiedziałem, to będzie na naszym kontrolerze.

93
00:05:57,400 --> 00:06:01,180
‫Spójrzmy więc ponownie na kropkę H kontrolera.

94
00:06:01,180 --> 00:06:06,340
‫Chcemy tego w ramach gry i będziemy szukać w tym miejscu.

95
00:06:06,740 --> 00:06:07,330
‫Przepraszam?

96
00:06:07,330 --> 00:06:09,820
‫Właściwie punkt widzenia to słowo, którego szukamy.

97
00:06:10,240 --> 00:06:10,990
‫A tutaj jest ich kilka.

98
00:06:11,020 --> 00:06:15,460
‫Zdobądź oczy aktora, punkty widzenia, które będą patrzeć oczami aktora.

99
00:06:15,760 --> 00:06:21,370
‫Ale tak naprawdę chcemy uzyskać punkt widzenia, który dla kontrolera powietrza będzie wykorzystywał ich oczy.

100
00:06:21,760 --> 00:06:24,460
‫Ale dla gracza użyjemy kamery gracza.

101
00:06:24,460 --> 00:06:25,540
‫Więc tego właśnie chcemy.

102
00:06:25,540 --> 00:06:27,460
‫Chcemy uzyskać punkt widzenia gracza.

103
00:06:28,030 --> 00:06:31,840
‫Ale przede wszystkim musimy najpierw zdobyć ten kontroler.

104
00:06:32,200 --> 00:06:38,920
‫A sposobem na to jest przede wszystkim skłonienie właściciela do zapamiętania, że kiedy mieliśmy otwartą

105
00:06:39,370 --> 00:06:44,860
‫postać strzelca i schodzimy w dół lub w górę, aby rozpocząć grę.

106
00:06:45,100 --> 00:06:47,980
‫Widzisz, ustawiamy właściciela broni na postać.

107
00:06:48,520 --> 00:06:51,630
‫Oznacza to, że w broni możemy iść w drugą stronę.

108
00:06:51,640 --> 00:06:56,680
‫Możemy powiedzieć, że zdobądź właściciela, a to da nam postać strzelca.

109
00:06:57,010 --> 00:06:59,350
‫Teraz nie będzie wiedział, że to postać strzelca.

110
00:06:59,350 --> 00:07:00,850
‫Wie tylko, że jest aktorem.

111
00:07:00,850 --> 00:07:02,320
‫Więc będziemy musieli zrobić tutaj obsadę.

112
00:07:02,950 --> 00:07:07,540
‫Więc robimy obsadę do postaci Strzelca.

113
00:07:08,600 --> 00:07:12,680
‫I tak naprawdę nie musimy nawet wiedzieć nic poza tym, że jest to postać strzelanka.

114
00:07:12,950 --> 00:07:18,770
‫Wystarczy wiedzieć, że jest to pionek, a każdy pionek może wtedy posiadać tę broń, nawet jeśli nie jest

115
00:07:18,770 --> 00:07:19,640
‫postacią strzelca.

116
00:07:19,850 --> 00:07:22,070
‫Więc postaraj się być tak niekonkretny, jak to tylko możliwe.

117
00:07:22,280 --> 00:07:24,140
‫Ale dlaczego musi to być pionek?

118
00:07:24,140 --> 00:07:29,270
‫Musi to być pionek, ponieważ potrzebujemy kontrolera i tylko pionki mogą być w posiadaniu kontrolerów.

119
00:07:29,720 --> 00:07:30,920
‫Więc umieśćmy to w zmiennej.

120
00:07:30,920 --> 00:07:38,930
‫Będzie to gwiazda -- a następnie pionek właściciela będzie nazwą zmiennej.

121
00:07:39,770 --> 00:07:42,110
‫Następnie musimy sprawdzić, czy to nie jest null.

122
00:07:48,750 --> 00:07:53,820
‫I zamierzam to zrobić za pomocą jednej linijki, która mówi, że jeśli jest teraz, wracamy wcześnie

123
00:07:54,150 --> 00:07:59,070
‫z Apple Trigger, aby nie było żadnego ryzyka ochłodzenia czegokolwiek za pomocą wskaźnika zerowego.

124
00:07:59,580 --> 00:08:09,830
‫Więc możemy sprawić, że właściciel pobierze kontroler i chcemy go zapisać w magazynie kontrolera A.

125
00:08:10,110 --> 00:08:12,720
‫A to może być kontroler właściciela.

126
00:08:14,210 --> 00:08:14,870
‫Tak jak.

127
00:08:15,590 --> 00:08:19,610
‫I znowu, chcemy tylko sprawdzić, czy to nie jest null, ponieważ będziemy

128
00:08:19,610 --> 00:08:23,660
‫wywoływać metodę na tym i nie możemy wywoływać metod na wskaźnikach o wartości null.

129
00:08:23,960 --> 00:08:26,690
‫Sprawia, że jest nierealny, nieszczęśliwy i rozbija się.

130
00:08:27,050 --> 00:08:31,220
‫W tym miejscu możemy teraz zrobić nasz własny kontroler.

131
00:08:33,310 --> 00:08:37,000
‫Powinniśmy być w stanie przywołać do tego punkt widzenia.

132
00:08:38,450 --> 00:08:43,250
‫Tak więc pojawia się wyzwanie, aby ustawić tę lokalizację i rotację za pomocą tej nowej funkcji.

133
00:08:43,520 --> 00:08:45,860
‫Możesz ponownie zobaczyć dla nas podpis.

134
00:08:45,860 --> 00:08:52,000
‫Idziemy do Controller Dot H, mamy plik i patrzymy na to, aby uzyskać punkt widzenia.

135
00:08:52,010 --> 00:08:58,700
‫Spróbuj i zobacz, czy z tej sygnatury możesz dowiedzieć się, jak jej użyć, aby uzyskać tę lokalizację i rotację,

136
00:08:58,700 --> 00:09:01,250
‫które chcemy przekazać naszemu pomocnikowi debugowania rysowania.

137
00:09:01,820 --> 00:09:05,630
‫A więc będziesz pamiętać, że to wykorzystuje nasze parametry.

138
00:09:05,630 --> 00:09:12,770
‫Popraw więc parametry swojej aplikacji, narysuj kamerę debugowania za pomocą tego fragmentu kodu, który właśnie napisaliśmy, i przetestuj

139
00:09:12,770 --> 00:09:14,090
‫ją w widoku.

140
00:09:14,360 --> 00:09:19,340
‫Idź i kliknij przycisk wyzwalacza kilka razy w różnych lokalizacjach i zobacz, gdzie kamera kończy

141
00:09:19,340 --> 00:09:21,110
‫wyświetlanie wstrzymanego wideo i ruszaj.

142
00:09:22,440 --> 00:09:22,760
‫Dobra.

143
00:09:22,770 --> 00:09:23,250
‫Witamy spowrotem.

144
00:09:23,550 --> 00:09:24,630
‫Więc zdobądź punkt widzenia planu.

145
00:09:24,630 --> 00:09:29,640
‫Skopiuję nazwę metody i przeniosę ją tutaj, ponieważ jest to parametr out.

146
00:09:29,670 --> 00:09:36,090
‫Będę musiał najpierw zadeklarować zmienne, do których chcę wprowadzić te wartości w lokalizacji wektora.

147
00:09:36,780 --> 00:09:41,070
‫Mamy F, rotator, rotację.

148
00:09:42,320 --> 00:09:45,590
‫I chcemy przekazać je jako argumenty.

149
00:09:45,620 --> 00:09:48,080
‫Pozwolę sobie trochę poprawić moje wcięcie.

150
00:09:48,470 --> 00:09:51,620
‫A my przejdziemy do lokalizacji, rotacji.

151
00:09:52,280 --> 00:09:58,520
‫I wiemy, że ponieważ to właśnie zostało tu zadeklarowane, czytając to, możemy zgadywać, że są to teraz

152
00:09:58,520 --> 00:10:03,890
‫nasze parametry, mimo że nie ma w tym względzie żadnej pomocy składniowej z C++.

153
00:10:04,550 --> 00:10:09,440
‫Następnie możemy przekazać tę lokalizację zamiast lokalizacji aktora i możemy przekazać

154
00:10:09,440 --> 00:10:17,870
‫tę rotację zamiast aktywnej rotacji do naszego narysowania kamery debugowania, a następnie możemy skompilować tę kompilację i wypróbować ją

155
00:10:17,870 --> 00:10:19,070
‫w edytorze.

156
00:10:19,340 --> 00:10:21,290
‫Wygląda na to, że kompilacja została zakończona.

157
00:10:21,300 --> 00:10:22,850
‫Chodźmy pobawić się.

158
00:10:23,540 --> 00:10:29,110
‫A kiedy nacisnąłem spust, można było zobaczyć kamerę pojawiającą się tuż nad moim punktem widzenia.

159
00:10:29,120 --> 00:10:29,900
‫To dobry znak.

160
00:10:30,260 --> 00:10:31,370
‫Cofam się trochę.

161
00:10:31,370 --> 00:10:32,000
‫Możesz zobaczyć.

162
00:10:32,000 --> 00:10:32,480
‫Proszę bardzo.

163
00:10:32,480 --> 00:10:38,240
‫Mamy te kamery, które wskazują dokładnie we właściwym kierunku, z którego właśnie patrzyłem.

164
00:10:38,240 --> 00:10:43,640
‫Więc możesz sobie wyobrazić, jak będziemy mogli wystrzelić promień z tej kamery w

165
00:10:43,640 --> 00:10:48,860
‫dół kamery i spróbować trafić w coś tam, na co wtedy patrzyłem.

166
00:10:49,100 --> 00:10:51,120
‫I to właśnie będziemy robić w następnym wykładzie.

167
00:10:51,140 --> 00:10:51,680
‫Do zobaczenia tam.

