﻿1
00:00:03,980 --> 00:00:05,900
‫Hallo en welkom terug.

2
00:00:05,930 --> 00:00:10,610
‫Nu hebben we een tank gemaakt die kan bewegen en zelfs zijn torentje kan draaien.

3
00:00:10,610 --> 00:00:16,190
‫En we zijn nu klaar om een torenklasse te maken die een deel van de functionaliteit kan erven

4
00:00:16,190 --> 00:00:18,830
‫die de tank heeft geërfd van de basispodklasse.

5
00:00:19,100 --> 00:00:24,560
‫Nu, als we eenmaal een torenklasse hebben gemaakt, gaan we de tick-functie overschrijven, zodat we ook

6
00:00:24,560 --> 00:00:26,000
‫zijn torentje kunnen draaien.

7
00:00:26,030 --> 00:00:32,080
‫Dus ons doel hier is om de torentjes zo te laten draaien dat ze altijd naar de tank kijken.

8
00:00:32,090 --> 00:00:37,430
‫Op deze manier zullen ze, wanneer ze projectielen beginnen af te vuren, de tank soms raken zolang de tank niet

9
00:00:37,430 --> 00:00:39,020
‫snel uit de weg gaat.

10
00:00:39,630 --> 00:00:43,740
‫En we gaan ook uitzoeken hoe we de tank te pakken kunnen krijgen --.

11
00:00:43,770 --> 00:00:49,380
‫Op die manier kunnen we de tank richten -- en de toren van de toren naar de tank draaien --.

12
00:00:49,410 --> 00:00:52,350
‫We maken ons klaar voor een projectielgevecht.

13
00:00:52,650 --> 00:00:58,200
‫Dus ik ben hier in de editor en ik ga naar onze tune tanks-map waar de basis

14
00:00:58,200 --> 00:00:59,910
‫- en de tankklassen zijn.

15
00:01:00,270 --> 00:01:04,650
‫Nu wil ik een torenklasse maken op basis van de basisklasse.

16
00:01:04,770 --> 00:01:07,850
‫De manier waarop we dit deden met de tankklasse was dat we gelijk hadden.

17
00:01:07,860 --> 00:01:14,430
‫Geklikt op base -- en geselecteerd C++-klasse maken afgeleid van gebaseerd op een alternatieve manier is om naar

18
00:01:14,430 --> 00:01:18,210
‫tools te gaan en een nieuwe C++-klasse te selecteren.

19
00:01:18,540 --> 00:01:24,630
‫En vanaf hier kunnen we op het tabblad klikken dat alle klassen zegt en zoeken naar basis --.

20
00:01:24,750 --> 00:01:27,270
‫En hier zien we onze basis -- klasse.

21
00:01:27,480 --> 00:01:33,050
‫Als ik dit selecteer en op volgende klik, maak ik nu een nieuwe klasse op basis van base --.

22
00:01:33,060 --> 00:01:38,910
‫Ik laat het op hetzelfde pad als al onze andere C++ klassen en ik ga deze toren noemen.

23
00:01:39,210 --> 00:01:41,070
‫Dus laten we klikken op Klasse maken.

24
00:01:41,610 --> 00:01:44,720
‫Dus hier is mijn nieuwe torentijdperk en Tower Dot.

25
00:01:44,790 --> 00:01:51,360
‫CP Nu is het eerste dat we nodig hebben de tick-functie, omdat de toren zijn torentje wil draaien om

26
00:01:51,360 --> 00:01:53,520
‫naar de -- te kijken.

27
00:01:53,730 --> 00:01:56,640
‫Dus we gaan de tick-functie hier overschrijven.

28
00:01:56,640 --> 00:02:03,930
‫Dus ik ga een nieuwe openbare sectie maken en we gaan virtual void tick typen, waarvoor een float nodig

29
00:02:03,930 --> 00:02:07,560
‫is, Delta Time genaamd, en dit is een override.

30
00:02:07,560 --> 00:02:14,100
‫Nu zullen we in toekomstige video's meer in detail treden over virtueel en overschrijven, maar we nemen in

31
00:02:14,100 --> 00:02:18,600
‫wezen de overgenomen tick-functie en creëren er een nieuwe implementatie voor.

32
00:02:18,600 --> 00:02:23,520
‫Dus laten we de vinkfunctie nemen en deze hier in Tower CP implementeren.

33
00:02:23,550 --> 00:02:29,370
‫Nu moeten we de naam van de vinkfunctie laten voorafgaan door een toren en de dubbele dubbele punt.

34
00:02:29,370 --> 00:02:34,950
‫En zoals altijd is het een goed idee om supertick te bellen en moeten we in Delta-tijd passeren.

35
00:02:34,950 --> 00:02:40,830
‫Wat ik hier zou willen doen, is de tankkoepel draaien zodat de toren de tank bedreigt en klaar is

36
00:02:40,830 --> 00:02:42,390
‫om projectielen af te vuren.

37
00:02:42,390 --> 00:02:45,870
‫Maar ik zou dit alleen willen doen als de tank binnen bereik is.

38
00:02:46,170 --> 00:02:52,620
‫Nu, om te weten of de tank binnen bereik is, moeten we de afstand weten van de toren

39
00:02:52,620 --> 00:02:53,750
‫tot de tank.

40
00:02:53,760 --> 00:02:57,510
‫Hier is een kleine gadget die de oorsprong van de wereld vertegenwoordigt.

41
00:02:57,510 --> 00:03:01,470
‫Met andere woorden, het punt in de ruimte waar X, Y en Z nul zijn.

42
00:03:01,470 --> 00:03:08,220
‫Als we het hebben over de locatie van een acteur, hebben we het over de vector van de oorsprong naar

43
00:03:08,220 --> 00:03:08,970
‫die locatie.

44
00:03:08,970 --> 00:03:15,060
‫En we kunnen die locatievector altijd krijgen met behulp van get actor location, zodat we de locatie van een van de torens

45
00:03:15,060 --> 00:03:17,430
‫en de locatie van de tank kunnen krijgen.

46
00:03:17,430 --> 00:03:21,930
‫En als we die twee locaties kennen, kunnen we de afstand ertussen berekenen.

47
00:03:21,930 --> 00:03:28,470
‫We zouden dit kunnen doen met vectorwiskunde, maar de F vectorklasse heeft een functie genaamd dist, en

48
00:03:28,470 --> 00:03:33,810
‫deze functie gaat naar locatievectoren en wat het teruggeeft is de afstand ertussen.

49
00:03:33,810 --> 00:03:40,440
‫Dus hier in het toren-CP-bestand, in de tick-functie, ga ik een paar aantekeningen maken zodat we weten wat

50
00:03:40,440 --> 00:03:41,940
‫we moeten doen.

51
00:03:41,940 --> 00:03:52,890
‫Eerst moeten we de afstand tot de tank vinden na die controle om te zien of de tank binnen bereik is

52
00:03:52,890 --> 00:03:58,170
‫en indien binnen bereik de toren naar de tank draaien.

53
00:03:59,070 --> 00:04:00,960
‫Dus we hebben hier wat te doen.

54
00:04:01,140 --> 00:04:05,820
‫Nu, om de afstand tot de tank te vinden, moeten we de tank te pakken krijgen.

55
00:04:05,850 --> 00:04:08,640
‫Een goede plek om dat te doen is in Begin Play.

56
00:04:08,640 --> 00:04:13,350
‫Laten we dus naast de vinkfunctie doorgaan en Begin Play negeren.

57
00:04:13,380 --> 00:04:17,580
‫Merk nu op dat in Tank H het spel begint in een beschermde sectie.

58
00:04:17,580 --> 00:04:21,210
‫We gaan het ook in de toren beschermen.

59
00:04:21,210 --> 00:04:27,870
‫Dus we plaatsen het beveiligde gedeelte net onder het openbare gedeelte en implementeren het begin van het spel net onder het

60
00:04:27,870 --> 00:04:28,380
‫vinkje.

61
00:04:28,380 --> 00:04:35,580
‫Dus laten we naar Tower Dot, CP gaan, implementeren, beginnen met spelen, de functienaam volledig kwalificeren en zoals je waarschijnlijk

62
00:04:35,580 --> 00:04:38,670
‫al geraden hebt, noemen we Super Begin Play.

63
00:04:38,790 --> 00:04:44,310
‫Om nu de tank te krijgen en in een variabele op te slaan, hebben we een variabele van het type tank nodig.

64
00:04:44,310 --> 00:04:49,200
‫Dus we gaan dat hier in Towers H in een privégedeelte plaatsen.

65
00:04:49,200 --> 00:04:55,290
‫Dit wordt een A-tank, het is een wijzer en we kunnen deze tank gewoon noemen.

66
00:04:55,290 --> 00:05:01,980
‫En om te voorkomen dat we Tank H hier moeten opnemen, kunnen we naar voren verklaren dat we hebben gezien hoe belangrijk

67
00:05:01,980 --> 00:05:03,000
‫dat kan zijn.

68
00:05:03,360 --> 00:05:09,540
‫Dus nu hebben we deze tankaanwijzer en als we erachter kunnen komen hoe we toegang kunnen krijgen tot de tank, kunnen we deze

69
00:05:09,540 --> 00:05:11,970
‫hier in onze tankaanwijzer opslaan en beginnen met spelen.

70
00:05:12,000 --> 00:05:18,510
‫Het eerste wat ik ga doen is Tank H opnemen, zodat we het type echt kunnen gebruiken.

71
00:05:18,510 --> 00:05:20,580
‫Dus hoe krijgen we toegang tot de tank?

72
00:05:20,580 --> 00:05:26,220
‫Welnu, hier is de onwerkelijke engine-documentatie voor een handige functie genaamd speler pion ophalen.

73
00:05:26,310 --> 00:05:29,100
‫Het bestaat in een gameplay-statistieken.

74
00:05:29,160 --> 00:05:34,680
‫Dus aangezien ik dit open heb, ga ik verder en kopieer ik de include voor gameplay-statistieken en bekijk

75
00:05:34,680 --> 00:05:35,910
‫ik de syntaxis.

76
00:05:35,910 --> 00:05:39,060
‫Het heeft twee ingangen, een wereldcontextobject.

77
00:05:39,470 --> 00:05:42,950
‫We weten al hoe we daarmee om moeten gaan en een spelersindex.

78
00:05:42,950 --> 00:05:49,310
‫En zoals we zagen voor spellen voor één speler zoals de onze, zal de spelersindex altijd speler nul zijn en

79
00:05:49,310 --> 00:05:53,660
‫dat geeft ons toegang tot de pion die overeenkomt met speler nul.

80
00:05:54,050 --> 00:05:57,650
‫Dus laten we deze functie hier in Tower Dot CP noemen.

81
00:05:57,680 --> 00:06:04,850
‫Ik ga de include voor je gameplay-statistieken plakken en in het begin van het

82
00:06:04,850 --> 00:06:12,290
‫spel ga ik de tank gelijk stellen aan je gameplay-statistieken get player -- voor het wereldcontext-object.

83
00:06:12,290 --> 00:06:17,910
‫Ik kan hierin passen en voor de spelersindex kunnen we in nul passen.

84
00:06:17,930 --> 00:06:19,970
‫Kijk nu eens naar de rode kronkel.

85
00:06:19,970 --> 00:06:26,120
‫Er staat dat een waarde van het type een pion niet kan worden toegewezen aan een entiteit van het type A-tank.

86
00:06:26,150 --> 00:06:33,290
‫Dit is exact hetzelfde probleem dat we tegenkwamen toen we probeerden te bellen, controller te krijgen en het resultaat

87
00:06:33,320 --> 00:06:35,810
‫op te slaan in een A-spelercontroller.

88
00:06:35,870 --> 00:06:42,200
‫Een tank is een kind van een pion, dus we kunnen geen oudertype in een kindaanwijzer opslaan.

89
00:06:42,200 --> 00:06:43,370
‫We moeten.

90
00:06:44,150 --> 00:06:46,060
‫Je raadt het al, we moeten werpen.

91
00:06:46,070 --> 00:06:51,830
‫We gaan hier dus de waarde van nemen en deze in een cast-functieaanroep plaatsen.

92
00:06:51,830 --> 00:06:56,000
‫Dus we gaan zeggen cast en we casten naar een tank.

93
00:06:56,000 --> 00:07:02,300
‫En wat we doorgeven om te casten, is deze oproep om spelersvijver te krijgen.

94
00:07:02,300 --> 00:07:04,850
‫Dus laten we dat tussen haakjes zetten.

95
00:07:04,850 --> 00:07:09,260
‫En na de cast hebben we toegang tot de tank.

96
00:07:09,380 --> 00:07:16,310
‫Dus nu we toegang hebben tot de tank, kunnen we de afstand tot de tank vinden en een afstand is een vlotter.

97
00:07:16,310 --> 00:07:20,240
‫We kunnen dus een lokale float-variabele maken die afstand wordt genoemd.

98
00:07:20,600 --> 00:07:27,380
‫En waar we het gelijk aan gaan stellen, is het resultaat van het aanroepen van de F vector statische functie dist.

99
00:07:27,410 --> 00:07:31,700
‫Dist neemt nu twee invoerparameters van het type F vector.

100
00:07:31,880 --> 00:07:34,850
‫Nu willen we de afstand tussen twee punten in de ruimte.

101
00:07:34,850 --> 00:07:37,010
‫Een daarvan is de locatie van de toren.

102
00:07:37,010 --> 00:07:43,190
‫We zitten in de torenklasse, dus we kunnen de locatie van de acteur bellen en dat geeft ons de locatie van de toren.

103
00:07:43,190 --> 00:07:44,660
‫Maar hoe zit het met de tank?

104
00:07:44,660 --> 00:07:50,870
‫We kunnen de tank bellen, de locatie van de acteur opvragen, en nu hebben we de afstand.

105
00:07:50,870 --> 00:07:56,450
‫Het enige probleem is dat we de tankaanwijzer gebruiken zonder eerst te controleren of deze niet null

106
00:07:56,450 --> 00:07:57,110
‫is.

107
00:07:57,290 --> 00:08:05,600
‫Dus we moeten eerst if tank zeggen en dan kunnen we deze functieaanroep aannemen en deze naar hier binnen de

108
00:08:05,600 --> 00:08:06,860
‫if-instructie slepen.

109
00:08:06,860 --> 00:08:13,190
‫Dus als de tank geldig is, hebben we toegang tot de locatie met de locatie van de acteur.

110
00:08:13,190 --> 00:08:14,030
‫Uitstekend.

111
00:08:14,030 --> 00:08:19,130
‫Aangezien we in deze if-verklaring werken, ga ik deze andere opmerkingen hier naar binnen verplaatsen omdat we

112
00:08:19,130 --> 00:08:24,410
‫weten dat we niet kunnen controleren of de tank binnen bereik is, als de tank niet eens geldig is.

113
00:08:24,590 --> 00:08:28,790
‫Dus ik daag je uit om de toren naar de tank te draaien.

114
00:08:28,790 --> 00:08:33,020
‫Nu willen we dit alleen doen als de tank binnen bereik is, we hebben de afstand.

115
00:08:33,020 --> 00:08:35,240
‫Dus nu hebben we een vuurbereikvariabele nodig.

116
00:08:35,240 --> 00:08:40,490
‫Dus maak een vlotter genaamd vuurbereik in de torenklasse en stel deze bloot met je eigendom.

117
00:08:40,490 --> 00:08:42,980
‫We willen dit graag vanuit de editor kunnen bewerken.

118
00:08:43,010 --> 00:08:45,890
‫Nu ga je kijken of de tank binnen bereik is.

119
00:08:45,890 --> 00:08:50,630
‫Als het 'roteer torentje' wordt genoemd, moet het draaitorentje naar het doel worden gekeken.

120
00:08:50,630 --> 00:08:53,180
‫Je gaat langs de tanklocatie.

121
00:08:53,180 --> 00:08:56,660
‫Dus pauzeer de video en implementeer dit gedrag nu.

122
00:09:00,030 --> 00:09:00,420
‫Oké.

123
00:09:00,420 --> 00:09:02,370
‫We hebben dus een vuurbereikvariabele nodig.

124
00:09:02,370 --> 00:09:05,940
‫Dus hier in Toren H hebben we een privégedeelte.

125
00:09:05,940 --> 00:09:07,680
‫We gaan een vlotter maken.

126
00:09:08,340 --> 00:09:15,450
‫Ik ga dit vuurbereik noemen en ik ga door en initialiseer het naar een waarde van, laten we

127
00:09:15,450 --> 00:09:16,650
‫zeggen, 300 F.

128
00:09:16,650 --> 00:09:21,030
‫Maar we zullen hiermee experimenteren, want het wordt jouw eigendom.

129
00:09:21,240 --> 00:09:22,860
‫Dus je eigendom.

130
00:09:22,860 --> 00:09:29,070
‫En aangezien ik wil dat alle tanks hetzelfde vuurbereik hebben, ga ik dit maken en het is

131
00:09:29,070 --> 00:09:29,910
‫alleen standaard.

132
00:09:29,910 --> 00:09:33,270
‫Dus op die manier kunnen we het alleen bewerken op de standaardblauwdruk.

133
00:09:33,300 --> 00:09:38,940
‫Als je de jouwe nu ergens hebt bewerkt of misschien alleen de instantie hebt bewerkt, is dat helemaal goed.

134
00:09:38,940 --> 00:09:42,090
‫Het is echt een kwestie van voorkeur en we kunnen het later veranderen.

135
00:09:42,090 --> 00:09:46,710
‫Ik ga het ook een categorie geven en ik ga deze categorie gevechten noemen.

136
00:09:46,740 --> 00:09:50,820
‫Laten we naar Tower CP gaan en we hebben hier het volgende punt.

137
00:09:50,820 --> 00:09:57,120
‫Controleer of de tank binnen bereik is, wat betekent dat we moeten controleren of de afstand kleiner is dan

138
00:09:57,120 --> 00:09:59,160
‫of gelijk is aan het vuurbereik.

139
00:09:59,160 --> 00:10:04,860
‫We hebben kleiner dan of gelijk aan en niet gewoon gelijk aan, want van frame tot frame

140
00:10:04,860 --> 00:10:11,310
‫kan de afstand in feite groter zijn dan vuurbereik, één frame en kleiner dan vuurbereik het volgende frame volledig voorbij

141
00:10:11,310 --> 00:10:11,970
‫vuurbereik.

142
00:10:11,970 --> 00:10:15,870
‫Het kan dus eigenlijk nooit precies gelijk worden aan het vuurbereik.

143
00:10:15,870 --> 00:10:20,820
‫In feite, met drijvende-kommawaarden, is het vrij zeldzaam dat twee floats precies gelijk zijn.

144
00:10:20,820 --> 00:10:26,640
‫Dus we hebben dit als controle en als we de binnenkant ervan bereiken, betekent dit dat de afstand kleiner is dan of gelijk is

145
00:10:26,640 --> 00:10:27,630
‫aan het vuurbereik.

146
00:10:27,630 --> 00:10:33,120
‫De tank is nu binnen bereik, wat betekent dat deze opmerking daarheen kan worden verplaatst.

147
00:10:33,960 --> 00:10:41,190
‫Nu, als je binnen bereik bent, draai je de toren naar de tank, dat betekent dat we de functie voor het draaien van de

148
00:10:41,190 --> 00:10:42,180
‫toren gaan aanroepen.

149
00:10:42,390 --> 00:10:45,690
‫Dat is onze beveiligde functie die we in de basispod hebben gestopt.

150
00:10:45,720 --> 00:10:51,060
‫Draai nu het torentje en kijk naar het doel en we hebben de locatie van de tank nodig.

151
00:10:51,060 --> 00:10:55,410
‫Dus dat wordt de locatie van de tank-acteur.

152
00:10:55,410 --> 00:11:02,010
‫En daarmee noemen we nu alleen roteren torentje als de tank binnen bereik is.

153
00:11:02,010 --> 00:11:05,040
‫Dus laten we dit compileren en kijken hoe het werkt.

154
00:11:05,340 --> 00:11:12,030
‫Dus we zijn weer terug in de editor en wat we moeten doen is naar blauwdrukken, pionnen gaan en

155
00:11:12,030 --> 00:11:15,120
‫een BP-piontorentje vinden en de volledige blauwdrukeditor openen.

156
00:11:15,120 --> 00:11:22,170
‫Nu rechtsboven zien we de basispion van de bovenliggende klasse, maar we willen dat onze bovenliggende klasse de toren is, zodat we naar

157
00:11:22,170 --> 00:11:27,930
‫de klasse-instellingen, de bovenliggende klasse kunnen gaan en naar de toren kunnen zoeken en deze kunnen selecteren.

158
00:11:27,960 --> 00:11:31,980
‫Nu is onze piontoren gebaseerd op de torenklasse.

159
00:11:31,980 --> 00:11:34,710
‫Laten we nu eens kijken wat er gebeurt als we op play drukken.

160
00:11:35,070 --> 00:11:37,200
‫Oké, dus ik verplaats de tank.

161
00:11:37,200 --> 00:11:40,560
‫We zijn niet binnen bereik, dus we zien geen beweging van de torens.

162
00:11:40,560 --> 00:11:44,100
‫Maar als ik binnen bereik kom, kijk daar dan naar.

163
00:11:44,100 --> 00:11:47,970
‫Nu volgen ze me en het ziet er nogal dreigend uit.

164
00:11:48,120 --> 00:11:52,080
‫Nu 300 eenheden is niet zo ver weg.

165
00:11:52,080 --> 00:11:55,440
‫Dus wat ik zou willen doen is die afstand bewerken.

166
00:11:55,440 --> 00:12:00,840
‫Dus vanaf hier in BP Pawn Turret, ga ik zelf BP Pond Turret selecteren.

167
00:12:00,840 --> 00:12:02,850
‫En hier is het gevechtsgedeelte.

168
00:12:02,850 --> 00:12:06,840
‫Ik ga door en stel dit in op ongeveer 700.

169
00:12:07,890 --> 00:12:13,350
‫Als ik nu op play druk, zal ik ervoor zorgen dat ze niet ronddraaien terwijl ik hier terugkom.

170
00:12:13,350 --> 00:12:16,410
‫Maar zodra ik binnen bereik ben, kijken ze me aan.

171
00:12:18,180 --> 00:12:19,020
‫Perfect.

172
00:12:20,030 --> 00:12:23,120
‫Samenvattend hebben we de torenklasse gemaakt.

173
00:12:23,120 --> 00:12:25,720
‫We hebben nu een vijand voor de tank.

174
00:12:25,730 --> 00:12:32,060
‫We hebben ook de toren van de toren in de richting van de tank gedraaid in de tick-functie en we doen dit alleen

175
00:12:32,060 --> 00:12:33,770
‫als de tank in vuurbereik is.

176
00:12:33,770 --> 00:12:39,650
‫We hebben ook de variabele brandbereik blootgelegd zodat deze in de blauwdruk kan worden aangepast.

177
00:12:39,770 --> 00:12:41,600
‫We zijn bijna klaar voor de strijd.

178
00:12:41,630 --> 00:12:44,450
‫In de komende video's gaan we dat instellen.

179
00:12:44,630 --> 00:12:45,620
‫Ik zie je snel.

