﻿1
00:00:04,110 --> 00:00:07,740
‫W tym wykładzie stworzymy klasę C++.

2
00:00:07,770 --> 00:00:11,310
‫Teraz potrzebujemy klasy, której możemy użyć dla naszych pionków.

3
00:00:11,340 --> 00:00:15,720
‫Teraz mówię o pionkach w liczbie mnogiej, ponieważ w naszej grze będą dwa różne pionki.

4
00:00:15,720 --> 00:00:20,280
‫Będzie czołg, którego używamy do toczenia się po poziomie, i wieża,

5
00:00:20,280 --> 00:00:24,870
‫która będzie naszym wrogiem, dzięki czemu będziemy mogli stworzyć podstawową klasę pionka.

6
00:00:24,870 --> 00:00:30,050
‫Będzie to miało podstawowe funkcje wspólne dla czołgu i wieży.

7
00:00:30,060 --> 00:00:34,890
‫I w ten sposób możemy stworzyć nasze dwie klasy potomne, czołg i wieżę.

8
00:00:34,890 --> 00:00:40,890
‫Będą one dziedziczyć cechy z podstawowej klasy pionków i są to rzeczy,

9
00:00:40,890 --> 00:00:47,010
‫które będą dzielić oba pionki, takie jak siatka, komponent kapsuły i możliwość wystrzeliwania

10
00:00:47,010 --> 00:00:47,820
‫pocisków.

11
00:00:47,820 --> 00:00:51,840
‫Teraz zajmiemy się wszystkimi tymi funkcjami w przyszłych filmach do tego filmu.

12
00:00:51,840 --> 00:00:56,280
‫Stworzymy tylko klasę C++ i dodamy do niej kilka podstawowych zmiennych.

13
00:00:56,280 --> 00:01:00,990
‫To jest nasza motywacja do stworzenia naszej pierwszej klasy C++.

14
00:01:01,020 --> 00:01:06,450
‫Teraz jesteśmy gotowi do rozpoczęcia tworzenia klas C++ dla tego projektu.

15
00:01:06,630 --> 00:01:13,410
‫Teraz zobaczysz w przeglądarce treści, że nie ma folderów dla klas C++.

16
00:01:13,410 --> 00:01:19,770
‫To dlatego, że nie stworzyliśmy jeszcze żadnej, ale zaraz napiszemy, żebyśmy mogli przejść do narzędzi

17
00:01:19,770 --> 00:01:22,140
‫i wybrać nową klasę C++.

18
00:01:22,140 --> 00:01:27,690
‫I tutaj wybierzemy klasę nadrzędną dla klasy, którą zamierzamy utworzyć.

19
00:01:27,690 --> 00:01:31,740
‫I domyślnie mamy tu kilka opcji do wyboru.

20
00:01:31,740 --> 00:01:35,330
‫To jest coś, co powinieneś zobaczyć na poprzednich wykładach.

21
00:01:35,330 --> 00:01:38,280
‫Więc teraz mamy kilka decyzji do podjęcia.

22
00:01:38,370 --> 00:01:41,550
‫W przypadku jednego, którą klasę rodzicielską wybierzemy?

23
00:01:41,550 --> 00:01:42,210
‫Mamy.

24
00:01:42,210 --> 00:01:43,860
‫Pierwszy to brak.

25
00:01:43,860 --> 00:01:50,910
‫To w zasadzie pozwoliłoby nam stworzyć zwykłą starą klasę C++, ale będziemy potrzebować dodatkowej funkcjonalności.

26
00:01:50,910 --> 00:01:55,440
‫Po pierwsze, chcemy móc umieścić instancję tego obiektu na świecie.

27
00:01:55,440 --> 00:01:58,230
‫Więc nie możemy tego zrobić za pomocą zwykłej, starej klasy C++.

28
00:01:58,230 --> 00:02:03,810
‫Moglibyśmy to zrobić z postacią, pionkiem lub aktorem, ale który z nich jest najbardziej odpowiedni do

29
00:02:03,810 --> 00:02:05,250
‫tego, co chcemy zrobić?

30
00:02:05,400 --> 00:02:10,020
‫Cóż, musimy cofnąć się o krok i zastanowić, co dokładnie staramy się tutaj stworzyć.

31
00:02:10,050 --> 00:02:17,460
‫Staramy się stworzyć czołg, którym będziemy mogli sterować, poruszać się po poziomie i strzelać pociskami, abyśmy mogli zadawać

32
00:02:17,460 --> 00:02:21,570
‫uszkodzenia i inne dobre rzeczy w naszym folderze zasobów.

33
00:02:21,570 --> 00:02:28,770
‫Przypomnijmy, że mamy tutaj ten folder z oczkami, mamy bazę czołgu i wieżę czołgu.

34
00:02:28,800 --> 00:02:32,670
‫To dwie różne siatki, które będą w naszej klasie.

35
00:02:32,670 --> 00:02:35,640
‫Dlatego potrzebujemy możliwości posiadania siatek.

36
00:02:35,640 --> 00:02:39,270
‫A więc zwykła klasa C++ nie ma takiej możliwości.

37
00:02:39,540 --> 00:02:41,670
‫Zastanówmy się więc przez chwilę.

38
00:02:41,670 --> 00:02:44,250
‫Jakiej klasy rodzicielskiej powinniśmy użyć?

39
00:02:44,250 --> 00:02:48,780
‫Cóż, pierwszą klasą, która prawdopodobnie powinna ci się przyjrzeć, jest klasa aktorska.

40
00:02:48,780 --> 00:02:52,320
‫Teraz klasa aktorska ma możliwość umieszczenia w świecie.

41
00:02:52,320 --> 00:02:53,850
‫To świetny początek.

42
00:02:53,940 --> 00:02:57,750
‫Posiada również możliwość wizualnej reprezentacji.

43
00:02:57,750 --> 00:03:04,080
‫Niezależnie od tego, czy jest to siatka, czy cokolwiek innego, można to zobaczyć po umieszczeniu go w świecie, pod

44
00:03:04,080 --> 00:03:07,650
‫warunkiem, że dasz mu siatkę lub cokolwiek, co chcesz zobaczyć.

45
00:03:07,650 --> 00:03:13,260
‫Teraz wywodząca się z aktora, mamy -- klasa i -- dziedziczy wszystkie te cechy

46
00:03:13,260 --> 00:03:19,830
‫z klasy aktora, z wyjątkiem tego, że ma dodatkowe cechy, takie jak możliwość bycia posiadanym przez kontrolera.

47
00:03:19,830 --> 00:03:25,980
‫Teraz cała ta sprawa z posiadaniem jest czymś, o czym bardziej szczegółowo powiemy później, ale na razie po

48
00:03:25,980 --> 00:03:30,060
‫prostu zrozum, że oznacza to -- może być kontrolowane przez gracza.

49
00:03:30,060 --> 00:03:36,750
‫Więc jeśli naciskasz przycisk myszy lub klawisz na klawiaturze, można to ustawić i skonfigurować tak, abyśmy

50
00:03:36,750 --> 00:03:38,580
‫mogli poruszać -- dookoła.

51
00:03:38,580 --> 00:03:43,110
‫Brzmi to jak coś, czego zdecydowanie chcielibyśmy dla naszego czołgu.

52
00:03:43,110 --> 00:03:49,410
‫Tak więc, obsługując dane wejściowe ruchu, -- brzmi jak całkiem dobry wybór, teraz wywodzący się z klasy

53
00:03:49,410 --> 00:03:55,560
‫-- iw ten sposób dziedziczący wszystkie rzeczy, które ma -- plus wszystkie rzeczy, które -- odziedziczyła po

54
00:03:55,560 --> 00:03:56,880
‫swojej klasie nadrzędnej.

55
00:03:56,880 --> 00:04:02,100
‫Mamy klasę postaci, która ma pewne cechy charakterystyczne dla postaci.

56
00:04:02,460 --> 00:04:05,550
‫Na przykład ma coś, co nazywa się komponentem ruchu postaci.

57
00:04:05,550 --> 00:04:07,830
‫Teraz -- nie ma tego.

58
00:04:07,860 --> 00:04:13,980
‫Komponent ruchu postaci daje jej dodatkowe zdolności, takie jak różne tryby ruchu, takie

59
00:04:13,980 --> 00:04:19,440
‫jak latanie i pływanie, kucanie i inne rzeczy charakterystyczne dla postaci.

60
00:04:19,440 --> 00:04:25,560
‫Klasa postaci jest dobra dla postaci dwunożnych i nie będzie działać zbyt dobrze dla postaci nie dwunożnych,

61
00:04:25,560 --> 00:04:28,410
‫które nie są istotami z dwiema nogami.

62
00:04:28,410 --> 00:04:34,050
‫I chociaż byłoby całkiem fajnie mieć czołg lecący po poziomie i zrzucający bomby na

63
00:04:34,050 --> 00:04:38,940
‫wszystko, co widzi, w tej sekcji nie zrobimy nic tak skomplikowanego.

64
00:04:38,940 --> 00:04:41,040
‫Zrobimy tylko czołg, który będzie mógł się toczyć.

65
00:04:41,040 --> 00:04:47,220
‫Więc naprawdę nie potrzebujemy komponentu ruchu postaci ani żadnych specjalnych rzeczy specyficznych dla postaci.

66
00:04:47,220 --> 00:04:52,380
‫Dlatego myślę, że -- jest idealny do tego, co staramy się osiągnąć.

67
00:04:52,380 --> 00:04:59,490
‫Więc rzucę wam wyzwanie stworzenia nowej klasy C++, stworzenia klasy opartej na -- i nazwania tej nowej

68
00:04:59,490 --> 00:05:01,230
‫klasy opartej --.

69
00:05:01,230 --> 00:05:03,600
‫Teraz możesz pozostawić wszystkie ustawienia bez zmian.

70
00:05:03,670 --> 00:05:05,200
‫W kreatorze tworzenia klasy.

71
00:05:05,200 --> 00:05:10,570
‫Nie musisz zmieniać ścieżki pliku ani nic w tym stylu, więc zatrzymaj wideo i utwórz swoją

72
00:05:10,570 --> 00:05:13,030
‫pierwszą klasę C++ dla tego projektu.

73
00:05:16,320 --> 00:05:18,090
‫Więc z powrotem tutaj na poziomie.

74
00:05:18,120 --> 00:05:21,690
‫Przejdźmy więc do narzędzi i stwórzmy nową klasę C++.

75
00:05:21,690 --> 00:05:24,260
‫Nie stworzyłem jeszcze klasy C++.

76
00:05:24,270 --> 00:05:27,180
‫Po prostu zamknąłem to, aby wrócić do tego slajdu.

77
00:05:27,180 --> 00:05:33,480
‫Ale teraz, kiedy wróciłem, jestem gotowy do stworzenia mojej pierwszej klasy C++ dla tego projektu i mam zamiar wybrać --

78
00:05:33,480 --> 00:05:36,720
‫i zobaczysz to za każdym razem, gdy najedziesz na nie.

79
00:05:36,720 --> 00:05:38,370
‫Prawdopodobnie już to widziałeś.

80
00:05:38,400 --> 00:05:44,790
‫Pojawia się podpowiedź, która mówi: -- jest klasą bazową wszystkich aktorów, których mogą opętać

81
00:05:44,790 --> 00:05:45,660
‫gracze.

82
00:05:45,660 --> 00:05:52,680
‫Albo wiem, że brzmi to całkiem ekscytująco, ale skonfigurujemy to tak, aby można je było przenosić na podstawie danych wejściowych od

83
00:05:52,680 --> 00:05:53,370
‫gracza.

84
00:05:53,370 --> 00:05:55,380
‫Więc to jest idealne.

85
00:05:55,470 --> 00:06:01,020
‫Dalej mówi się, że są fizycznymi reprezentacjami graczy i stworzeń na poziomie.

86
00:06:01,020 --> 00:06:07,080
‫Innymi słowy, kiedy stworzymy ten czołg, będzie on reprezentował nas jako graczy na całym świecie.

87
00:06:07,080 --> 00:06:07,950
‫Całkiem fajne.

88
00:06:08,040 --> 00:06:15,960
‫Więc wybierz -- i kliknij Dalej, a pokaże nam ścieżkę, w której zamierzamy umieścić tę klasę w naszym projekcie, a

89
00:06:15,960 --> 00:06:20,070
‫zobaczysz, że jest ona w czołgach z ukośnikiem źródłowym.

90
00:06:20,070 --> 00:06:26,280
‫Teraz będziemy chcieli nazwać nasze nowe -- ponieważ moje -- to straszne imię i jest bardzo niejasne.

91
00:06:26,280 --> 00:06:29,700
‫Teraz potrzebujemy czegoś bardziej konkretnego.

92
00:06:29,700 --> 00:06:35,400
‫Zamierzamy używać tego jako klasy bazowej, co oznacza, że będziemy wyprowadzać klasy z tej klasy,

93
00:06:35,400 --> 00:06:38,340
‫abyśmy mogli nazwać tę klasę bazową --.

94
00:06:38,340 --> 00:06:43,080
‫Teraz wiem, że to nie jest dużo lepsze niż moje -- ale hej, to mówi nam, że to jest podstawa --.

95
00:06:43,080 --> 00:06:46,770
‫To jest coś, z czego będziemy czerpać w przyszłości klasy potomne.

96
00:06:46,770 --> 00:06:47,730
‫Dojdziemy do tego.

97
00:06:47,730 --> 00:06:52,320
‫Ale na razie nazwiemy tę bazę -- i klikniemy Utwórz klasę.

98
00:06:53,930 --> 00:06:54,590
‫W porządku.

99
00:06:54,590 --> 00:06:58,340
‫Tak więc kod Visual Studio otworzył się dla nas z naszą nową klasą.

100
00:06:58,340 --> 00:07:01,700
‫Bazowaliśmy na H i na CP.

101
00:07:01,730 --> 00:07:08,180
‫Teraz możemy zamknąć ten pasek boczny, klikając tam ikonę Eksploratora, i możemy przyjrzeć się, co wygenerował

102
00:07:08,180 --> 00:07:09,890
‫dla nas kod V.

103
00:07:09,890 --> 00:07:16,880
‫Tak więc domyślnie otrzymujemy konstruktor klasy oraz trzy funkcje begin, play, tick i setup

104
00:07:16,880 --> 00:07:18,380
‫komponent input player.

105
00:07:18,410 --> 00:07:21,980
‫Teraz powinieneś zapoznać się z Begin, Play i zaznaczyć komentarze tutaj.

106
00:07:21,980 --> 00:07:23,300
‫Wyjaśnij, co robią.

107
00:07:23,330 --> 00:07:28,790
‫Konfiguracja komponentu wejściowego gracza to coś, co dostaje pionek, a ta funkcja pozwala nam obsługiwać dane wejściowe, takie jak

108
00:07:28,790 --> 00:07:34,250
‫klawisz na klawiaturze lub kliknięcie myszą, a my dowiemy się więcej o tym, jak to działa w przyszłych

109
00:07:34,250 --> 00:07:35,690
‫filmach w paśmie podstawowym.

110
00:07:35,840 --> 00:07:41,930
‫CP Te funkcje są dla nas zdefiniowane, ale są dość puste i nie zmienią tego również w

111
00:07:41,930 --> 00:07:42,740
‫przyszłych filmach.

112
00:07:42,740 --> 00:07:49,370
‫Tak więc w tym filmie stworzyliśmy naszą pierwszą klasę C++, a w następnym filmie omówimy komponenty i dlaczego chcielibyśmy

113
00:07:49,370 --> 00:07:51,770
‫dodać kilka do naszej nowej klasy.

114
00:07:51,800 --> 00:07:52,790
‫Zobaczymy się wkrótce.

