﻿1
00:00:04,130 --> 00:00:04,610
‫Hoi.

2
00:00:04,610 --> 00:00:05,450
‫Welkom terug.

3
00:00:05,480 --> 00:00:09,080
‫Nu hebben we al een basis gemaakt -- C++ klasse.

4
00:00:09,200 --> 00:00:16,310
‫In deze video gaan we van die klasse afleiden om een nieuwe onderliggende klasse te maken op basis van base --.

5
00:00:16,340 --> 00:00:19,310
‫Dus laten we bespreken waarom we zoiets zouden willen doen.

6
00:00:19,580 --> 00:00:26,300
‫Dus we hebben deze basis -- klasse en we weten dat we twee verschillende klassen zullen hebben die afgeleid zijn van

7
00:00:26,300 --> 00:00:27,080
‫basis --.

8
00:00:27,080 --> 00:00:30,020
‫We krijgen onze tank en we krijgen de toren.

9
00:00:30,050 --> 00:00:34,760
‫Nu bevat de basis mazen, een capsule en een spawnpunt.

10
00:00:34,760 --> 00:00:38,210
‫En dit zijn dingen die de Tank en de toren beide kunnen erven.

11
00:00:38,360 --> 00:00:44,480
‫Maar de tank en toren zullen ook een aantal functies hebben die van elkaar verschillen.

12
00:00:44,480 --> 00:00:50,060
‫Ten eerste gaat onze tank over de wereld bewegen en wordt hij ook bestuurd door de

13
00:00:50,060 --> 00:00:50,720
‫speler.

14
00:00:50,720 --> 00:00:55,220
‫Het moet dus worden geconfigureerd om invoer van het toetsenbord en de muis te krijgen.

15
00:00:55,220 --> 00:00:57,950
‫De toren, aan de andere kant, gaat daar gewoon zitten.

16
00:00:57,980 --> 00:01:03,860
‫Het heeft geen input van de speler nodig, omdat zijn acties allemaal worden bestuurd door code.

17
00:01:03,860 --> 00:01:10,010
‫Dus omdat de tank en toren zich anders zullen gedragen, gaan we gebruik maken van overerving om onderliggende klassen

18
00:01:10,010 --> 00:01:16,730
‫van basis te maken -- zodat we kunnen erven wat ze gemeen hebben en dan aan elke klasse die kenmerken toevoegen

19
00:01:16,730 --> 00:01:18,290
‫die anders zullen zijn.

20
00:01:18,290 --> 00:01:23,960
‫Dus we zijn terug hier in de editor en ik ga naar onze C++ klassen, Tune Tank's map waar

21
00:01:23,960 --> 00:01:29,240
‫we onze base -- class hebben en dit zal de class zijn waar we uit voortkomen.

22
00:01:29,240 --> 00:01:35,480
‫Nu kunnen we hier met de rechtermuisknop klikken en C++-klasse maken die is afgeleid van base -- selecteren.

23
00:01:35,480 --> 00:01:41,690
‫Dus laten we dat kiezen en ik ga het toestaan om deze klasse in dezelfde source slash tune tanks-map

24
00:01:41,690 --> 00:01:43,550
‫te plaatsen als base --.

25
00:01:43,610 --> 00:01:47,360
‫En voor de naam hiervan, noem ik het tank.

26
00:01:47,360 --> 00:01:54,560
‫Dus onze tankklasse zal de klasse zijn voor onze eigenlijke tank -- die we controleren en ons verplaatsen in

27
00:01:54,560 --> 00:01:55,400
‫de wereld.

28
00:01:55,430 --> 00:01:57,410
‫Dus laten we klikken op klasse maken.

29
00:01:57,560 --> 00:02:06,470
‫Oké, dus we hebben gecompileerd en vs-code is geopend met ons nieuwe tankbestand en we hebben ook Tank CP.

30
00:02:06,500 --> 00:02:08,210
‫Nu zijn deze vrij kaal.

31
00:02:08,210 --> 00:02:14,570
‫Er is hier echt niets, maar hoewel we ze niet kunnen zien, hebben we enkele dingen geërfd

32
00:02:14,570 --> 00:02:15,950
‫van de basisklasse.

33
00:02:15,950 --> 00:02:19,580
‫We hebben die componenten die we hebben toegevoegd aan base --.

34
00:02:19,580 --> 00:02:23,810
‫Ook al zijn dit privévariabelen, ze bestaan nog steeds in deze klasse.

35
00:02:23,810 --> 00:02:29,030
‫Dus nu we onze tankklasse hebben gemaakt, laten we het over een paar dingen hebben.

36
00:02:29,030 --> 00:02:31,880
‫De tank zal nodig hebben dat de toren niet.

37
00:02:31,880 --> 00:02:37,490
‫Omdat we de tank gaan besturen, hebben we een manier nodig om ons op de tank te concentreren

38
00:02:37,490 --> 00:02:39,530
‫terwijl deze door het level rolt.

39
00:02:39,950 --> 00:02:43,880
‫Op deze foto is dit een cameracomponent.

40
00:02:43,880 --> 00:02:47,030
‫Het is de C++-klasse, je cameracomponent.

41
00:02:47,180 --> 00:02:55,100
‫En deze rode lijn hier wordt een veerarmcomponent genoemd en de C++-klasse is je veerarmcomponent.

42
00:02:55,100 --> 00:03:01,370
‫Door deze componenten toe te voegen aan een -- kunnen we de -- bekijken vanuit het oogpunt van de camera.

43
00:03:01,370 --> 00:03:07,790
‫En als de camera en zijn veerarm op de een of andere manier aan de - op de een of andere manier zijn bevestigd, zullen ze de - over

44
00:03:07,790 --> 00:03:08,930
‫de hele wereld volgen.

45
00:03:08,930 --> 00:03:14,540
‫Nu, hier in de editor, als we teruggaan naar onze --'s map en BP -- tank openen, kunnen we op de

46
00:03:14,540 --> 00:03:16,730
‫viewport klikken zodat we alles kunnen zien.

47
00:03:16,730 --> 00:03:22,100
‫En dan kunnen we de capsule-comp selecteren en op toevoegen klikken en veerarm selecteren.

48
00:03:22,100 --> 00:03:24,080
‫Dit is een veerarmcomponent.

49
00:03:24,080 --> 00:03:25,610
‫Het lijkt op een rode lijn.

50
00:03:25,730 --> 00:03:31,490
‫Nu onze veerarmcomponent is geselecteerd, kunnen we nog een component toevoegen en camera kiezen.

51
00:03:31,490 --> 00:03:37,400
‫Nu we de camera hebben toegevoegd die aan de veerarm is bevestigd, hebben we nu een manier om vanuit

52
00:03:37,400 --> 00:03:41,230
‫het oogpunt van de camera te kijken zodra we de --.

53
00:03:41,240 --> 00:03:43,040
‫Nu is de veerarm best handig.

54
00:03:43,040 --> 00:03:49,250
‫Het heeft deze lengte van de doelarm en als je het aanpast, zul je zien dat de camera zich samen met de

55
00:03:49,250 --> 00:03:49,940
‫veerarm aanpast.

56
00:03:49,940 --> 00:03:54,470
‫Dit is dus een manier om te bepalen hoe ver de camera verwijderd is van de --.

57
00:03:54,470 --> 00:04:00,170
‫Dit zijn dus zeker dingen die we willen in onze ---klasse, maar we gaan ze toevoegen vanaf de

58
00:04:00,170 --> 00:04:04,460
‫C++-kant in plaats van ze gewoon hier in de blauwdruk toe te voegen.

59
00:04:04,460 --> 00:04:05,750
‫Die ga ik dus verwijderen.

60
00:04:05,750 --> 00:04:10,130
‫Dus voor je uitdaging wil ik dat je wat dingen toevoegt aan de tankklasse.

61
00:04:10,130 --> 00:04:15,890
‫Ten eerste hebben we een veerarmcomponent en een cameracomponent nodig, dus maak deze variabelen en maak

62
00:04:15,890 --> 00:04:16,790
‫ze aanwijzers.

63
00:04:16,790 --> 00:04:21,920
‫Ga je gang en maak een openbaar en een privégedeelte en plaats deze variabelen in het privégedeelte.

64
00:04:21,920 --> 00:04:27,590
‫Nu hebben we dit nodig als U-eigenschappen, dus geef ze eigenschapmacro's en vul die macro's in met de juiste

65
00:04:27,590 --> 00:04:31,610
‫specificaties op basis van wat je in de vorige lezingen hebt geleerd.

66
00:04:31,640 --> 00:04:36,920
‫Nadat u deze variabelen hebt gemaakt, maakt u een constructor en plaatst u deze in

67
00:04:36,920 --> 00:04:44,120
‫de openbare sectie en definieert u deze in het CP-bestand, en bouwt u vervolgens in de constructor onze camera- en veerarmcomponenten

68
00:04:44,120 --> 00:04:46,340
‫met behulp van het standaardsubobject Create.

69
00:04:46,340 --> 00:04:50,750
‫Zorg ervoor dat u de installatiebijlage gebruikt om deze componenten ergens aan te bevestigen.

70
00:04:50,750 --> 00:04:54,380
‫We willen graag dat onze veerarmcomponent aan de wortelcomponent wordt bevestigd.

71
00:04:54,380 --> 00:05:00,500
‫Gebruik dus root-component en set setup-bevestiging en bevestig deze voor de camera aan de veerarm.

72
00:05:00,500 --> 00:05:02,870
‫U kunt terugverwijzen naar de basis -- class.

73
00:05:03,020 --> 00:05:05,950
‫A Herinner uzelf eraan hoe de code eruitziet om deze dingen te doen.

74
00:05:05,960 --> 00:05:09,710
‫Ga je gang en pauzeer de video en voeg deze dingen toe aan de tankklasse.

75
00:05:12,580 --> 00:05:13,180
‫Oke.

76
00:05:13,180 --> 00:05:14,380
‫Dus we zijn hier in Tank.

77
00:05:15,250 --> 00:05:16,540
‫Nu, de eerste dingen eerst.

78
00:05:16,540 --> 00:05:20,110
‫Ik wil graag een openbaar gedeelte en een privé gedeelte.

79
00:05:20,350 --> 00:05:24,840
‫Dus het privégedeelte zal zijn waar we deze twee nieuwe componenten toevoegen.

80
00:05:24,850 --> 00:05:32,290
‫We willen een U-veerarmcomponent, die een aanwijzer zal zijn, en we kunnen deze veerarm noemen.

81
00:05:32,290 --> 00:05:37,760
‫En we hebben ook een nieuwe cameracomponent nodig en we zullen deze camera noemen.

82
00:05:37,780 --> 00:05:38,260
‫Dat is goed.

83
00:05:38,260 --> 00:05:39,970
‫Als uw namen iets anders zijn.

84
00:05:40,090 --> 00:05:45,070
‫Nu zie ik meteen de IntelliSense-fouten hier, wat betekent dat ik deze

85
00:05:45,070 --> 00:05:46,420
‫moet doorsturen.

86
00:05:46,420 --> 00:05:51,280
‫Dus ik ga klas met veerarm en klas met camera gebruiken.

87
00:05:51,280 --> 00:05:53,150
‫En nu zijn deze voorwaarts gedeclareerd.

88
00:05:53,170 --> 00:05:55,240
‫Nu hebben we onze nieuwe eigendommen nodig.

89
00:05:55,240 --> 00:05:57,460
‫Laten we dus de nieuwe eigenschapsmacro's toevoegen.

90
00:05:57,970 --> 00:06:02,930
‫En binnen de eigenschapmacro willen we enkele specificaties hebben.

91
00:06:02,950 --> 00:06:09,550
‫Deze zullen overal zichtbaar zijn, omdat we hebben gezien dat de componenten overal zichtbaar moeten zijn zodat

92
00:06:09,550 --> 00:06:13,010
‫we hun parameters in het detailpaneel kunnen aanpassen.

93
00:06:13,030 --> 00:06:18,550
‫Nu zie ik geen onmiddellijke noodzaak voor blootstelling aan de gebeurtenisgrafiek, dus ik denk niet dat we blauwdruk nodig hebben om te

94
00:06:18,550 --> 00:06:20,600
‫lezen, te schrijven of alleen te lezen.

95
00:06:20,620 --> 00:06:21,160
‫Dat is goed.

96
00:06:21,160 --> 00:06:23,770
‫Als je ze hebt toegevoegd, laat ik ze nu weg.

97
00:06:23,770 --> 00:06:25,630
‫Ik ga deze een categorie geven.

98
00:06:26,410 --> 00:06:32,230
‫En aangezien dit componenten zijn, plaats ik ze gewoon in onze componentencategorie, samen met onze

99
00:06:32,230 --> 00:06:33,330
‫andere componenten.

100
00:06:33,340 --> 00:06:38,470
‫Nu stel ik deze niet bloot aan de gebeurtenisgrafiek, dus ik heb onze meta niet nodig om privétoegang toe te staan die hier wordt

101
00:06:38,500 --> 00:06:38,940
‫gespecificeerd.

102
00:06:38,950 --> 00:06:45,640
‫Dus dit is genoeg voor de veerarm en ik zou het camera-onderdeel graag dezelfde eigendom willen geven.

103
00:06:46,180 --> 00:06:47,590
‫Dus ik kopieer het.

104
00:06:47,590 --> 00:06:49,270
‫Dus nu hebben we onze componenten.

105
00:06:49,420 --> 00:06:54,700
‫Het volgende dat we moeten doen, is ze in de constructor te construeren, wat betekent dat we een constructor nodig hebben.

106
00:06:54,700 --> 00:07:02,650
‫Nu zal de constructor dezelfde naam hebben als de klasse, dus het is een tank en we moeten deze constructor in

107
00:07:02,650 --> 00:07:03,910
‫het CP-bestand definiëren.

108
00:07:03,910 --> 00:07:08,710
‫Dus laten we naar Tank CP gaan en een tank maken.

109
00:07:09,520 --> 00:07:16,180
‫Dus er is onze functie-body en de tankconstructor moet worden voorafgegaan door onze klassenaam

110
00:07:16,180 --> 00:07:17,710
‫en de scope-resolutie-operator.

111
00:07:17,710 --> 00:07:19,360
‫Dat zijn deze dubbele dubbele punten hier.

112
00:07:19,360 --> 00:07:24,850
‫Op die manier maken we niet alleen een nieuwe functie, maar definiëren we onze constructor voor deze klasse.

113
00:07:24,850 --> 00:07:27,130
‫Nu willen we deze componenten construeren.

114
00:07:27,130 --> 00:07:29,530
‫Dus laten we beginnen met de veerarm.

115
00:07:29,860 --> 00:07:39,160
‫Dus we gaan zeggen dat de veerarm gelijk is aan het maken van een standaard subobject en dit zal een u-veerarmcomponent zijn.

116
00:07:41,260 --> 00:07:45,310
‫En voor de tekst noem ik deze veerarm gewoon.

117
00:07:46,270 --> 00:07:54,490
‫En voor de bevestiging gaan we de veerarm instellen, de bevestiging opzetten, de wortelcomponent doorgeven.

118
00:07:55,920 --> 00:07:56,220
‫Nutsvoorzieningen.

119
00:07:56,220 --> 00:07:57,240
‫Ik zat erop te wachten.

120
00:07:57,240 --> 00:07:58,050
‫Daar is het.

121
00:07:58,050 --> 00:08:03,920
‫De IntelliSense-foutmelding wijst naar een onvolledig klassetype met veerarmcomponent.

122
00:08:03,930 --> 00:08:10,320
‫Dat komt omdat we het headerbestand moeten opnemen omdat we een veerarmcomponent maken en gebruiken.

123
00:08:10,320 --> 00:08:16,020
‫Dus hier is mijn onwerkelijke motordocumentatie en als ik naar beneden scrol, is daar mijn include.

124
00:08:16,020 --> 00:08:21,820
‫Dus ik ga dat kopiëren en hier bovenaan plakken, net onder de tankrand.

125
00:08:21,900 --> 00:08:26,520
‫Nu, een kanttekening in het algemeen, je houdt je klasse-headerbestand bovenaan

126
00:08:26,520 --> 00:08:29,370
‫en bevat voor je componenten daaronder.

127
00:08:29,370 --> 00:08:30,750
‫Dus we hebben onze veerarm.

128
00:08:30,750 --> 00:08:32,790
‫Het is tijd om de camera te bouwen.

129
00:08:32,790 --> 00:08:39,300
‫Dus we gaan zeggen dat camera een standaard subobject maakt, je cameracomponent.

130
00:08:40,050 --> 00:08:45,240
‫En in de tekstmacro noem ik dit gewoon camera.

131
00:08:45,240 --> 00:08:51,120
‫En voor de camera noem ik setup attachment passeren in veerarm.

132
00:08:51,390 --> 00:08:54,240
‫En natuurlijk heb ik het cameraheaderbestand nodig.

133
00:08:54,240 --> 00:08:59,820
‫Dus hier is de onwerkelijke motordocumentatie en hier waar het zoekdocumentatie

134
00:08:59,820 --> 00:09:05,490
‫zegt, ik ga je cameracomponent typen en hier zie ik je cameracomponent.

135
00:09:05,490 --> 00:09:06,600
‫Ik zal dat selecteren.

136
00:09:06,600 --> 00:09:09,450
‫En hier is de documentatie voor de cameracomponent.

137
00:09:09,450 --> 00:09:14,100
‫Dus ik zal het kopiëren om het hier bovenaan ons bestand te plakken.

138
00:09:14,100 --> 00:09:15,930
‫En nu zouden we goed moeten zijn.

139
00:09:15,960 --> 00:09:18,630
‫Oké, dus laten we doorgaan en dit compileren.

140
00:09:18,810 --> 00:09:19,230
‫Oké.

141
00:09:19,230 --> 00:09:21,180
‫Dus ik heb een succesvolle compilatie.

142
00:09:21,210 --> 00:09:24,210
‫Laten we teruggaan naar de editor en hier verder -- Tank.

143
00:09:24,240 --> 00:09:30,690
‫Natuurlijk zien we niets omdat -- tank is afgeleid van basis -- en de componenten die we zojuist hebben

144
00:09:30,690 --> 00:09:33,510
‫toegevoegd, we hebben toegevoegd aan de tankklasse.

145
00:09:33,510 --> 00:09:39,720
‫Dus BP -- tank zal die niet krijgen omdat het niet afgeleid is van de tankklasse.

146
00:09:39,720 --> 00:09:44,910
‫Nu zouden we een nieuwe blauwdruk kunnen maken op basis van de tankklasse, maar dan zouden we deze

147
00:09:44,910 --> 00:09:46,710
‫componenten helemaal opnieuw moeten instellen.

148
00:09:46,710 --> 00:09:50,190
‫En ik heb niet echt zin om al dat werk een tweede keer te doen.

149
00:09:50,190 --> 00:09:55,080
‫Er is een makkelijkere manier om deze blauwdruk te repareren naar de tankklasse.

150
00:09:55,080 --> 00:10:01,530
‫We doen dat door naar de klasinstellingen te gaan en in het detailvenster met de klasinstellingen geselecteerd,

151
00:10:01,530 --> 00:10:04,980
‫zien we klasopties en er is deze bovenliggende klas.

152
00:10:04,980 --> 00:10:10,800
‫De vervolgkeuzelijst laat zien dat het is ingesteld om op te baseren, maar als we erop klikken, kunnen we naar

153
00:10:10,800 --> 00:10:13,200
‫tank zoeken en tank als de basisklasse kiezen.

154
00:10:13,200 --> 00:10:17,220
‫En nu is deze blauwdruk afgeleid van de tankklasse.

155
00:10:17,220 --> 00:10:23,070
‫Dus we zien dat al die eigenschappen die we instellen met onze componenten, zoals de mesh en de capsulegrootte,

156
00:10:23,070 --> 00:10:24,630
‫er allemaal nog zijn.

157
00:10:24,660 --> 00:10:27,090
‫Pas nu zien we een camera.

158
00:10:27,390 --> 00:10:29,730
‫In feite hebben we een veerarm en een camera.

159
00:10:29,730 --> 00:10:33,720
‫En als we nu de veerarm selecteren, kunnen we die rode lijn zien.

160
00:10:33,720 --> 00:10:34,710
‫Dit is dus geweldig.

161
00:10:34,710 --> 00:10:38,880
‫Dus ik zou dit veerarmonderdeel kunnen nemen en de lengte van de doelarm kunnen veranderen.

162
00:10:38,880 --> 00:10:46,650
‫Als ik wil, kan ik het instellen op ongeveer 600 en ik kan zelfs de rotatie ervan veranderen, zodat het de camera

163
00:10:46,650 --> 00:10:52,770
‫naar de tank kantelt door de rotatiemodus te selecteren en het een beetje omhoog te draaien.

164
00:10:52,770 --> 00:10:58,500
‫Zoals Dus nu wil ik je erop wijzen dat je de locatie van de camera niet moet veranderen.

165
00:10:58,530 --> 00:11:03,990
‫Het kan verleidelijk zijn om de camera te selecteren en deze in de wereld te verplaatsen, zodat u hem precies goed positioneert en

166
00:11:03,990 --> 00:11:05,190
‫in een goede hoek plaatst.

167
00:11:05,190 --> 00:11:07,350
‫Maar dit is niet de juiste manier om het te doen.

168
00:11:07,350 --> 00:11:13,410
‫De juiste manier is om de rotatie en de lengte van de doelarm van het veerarmonderdeel in te stellen.

169
00:11:13,410 --> 00:11:17,790
‫En de reden is dat je die camera aan het uiteinde van de veerarm wilt bevestigen.

170
00:11:17,790 --> 00:11:23,460
‫De veerarm heeft veel verschillende ingebouwde functies, zoals het inkrimpen wanneer de camera tegen een

171
00:11:23,460 --> 00:11:29,430
‫muur slaat om obstakels te vermijden, het zicht op de vijver te blokkeren en andere dergelijke dingen.

172
00:11:29,430 --> 00:11:35,070
‫U wilt dus dat de camera aan het uiteinde van de veerarm wordt bevestigd en vervolgens de veerarm

173
00:11:35,070 --> 00:11:39,990
‫afstelt in plaats van de positie en rotatie van de camera aan te passen.

174
00:11:40,110 --> 00:11:47,070
‫Dus in deze video hebben we de tankklasse gemaakt en we zijn afgeleid van de basisvijver om die kwaliteiten

175
00:11:47,070 --> 00:11:48,960
‫van de basisvijverklasse te erven.

176
00:11:49,140 --> 00:11:56,100
‫We hebben een veerarmcomponent en een cameracomponent toegevoegd en deze aan de editor blootgesteld met alleen zichtbaar en

177
00:11:56,100 --> 00:11:58,500
‫in hun eigen categorie geplaatst.

178
00:11:58,500 --> 00:12:03,900
‫Zo komen we stap voor stap dichter bij het eindproduct en in de volgende lezing gaan we deze

179
00:12:03,900 --> 00:12:05,130
‫tank verder ontwikkelen.

180
00:12:05,460 --> 00:12:06,510
‫Ik zie je snel.

