﻿1
00:00:03,990 --> 00:00:09,630
‫Dus we gaan een vuurfunctie maken en we gaan deze functie associëren met onze

2
00:00:09,630 --> 00:00:10,110
‫linkermuisknop.

3
00:00:10,110 --> 00:00:16,350
‫En hier kun je zien dat ik foutopsporingsbollen teken aan de punt van onze torenloop om te

4
00:00:16,350 --> 00:00:18,210
‫bewijzen dat deze actie-mapping werkt.

5
00:00:18,210 --> 00:00:21,360
‫Telkens als ik met de linkermuisknop klik, gebeurt er iets.

6
00:00:21,720 --> 00:00:23,090
‫Hé, welkom terug.

7
00:00:23,100 --> 00:00:28,770
‫In deze video gaan we het hebben over het maken van een vuurfunctie of een functie die we kunnen

8
00:00:28,770 --> 00:00:31,020
‫gebruiken wanneer we onze projectielen willen spawnen.

9
00:00:31,020 --> 00:00:36,090
‫Dus we gaan een vuurfunctie maken en deze koppelen aan een actietoewijzing.

10
00:00:36,090 --> 00:00:38,370
‫Nu hebben we astoewijzingen gebruikt.

11
00:00:38,370 --> 00:00:40,260
‫Een action mapping is vergelijkbaar.

12
00:00:40,260 --> 00:00:41,550
‫Laten we het er nu over hebben.

13
00:00:41,550 --> 00:00:47,280
‫Hier is een gedeelte van een schermafbeelding van de vuuractietoewijzing die we in onze projectinstellingen hebben.

14
00:00:47,280 --> 00:00:51,690
‫Je zult zien dat we de linkermuisknop hebben toegewezen aan de vuuractietoewijzing.

15
00:00:51,690 --> 00:00:55,290
‫Nu lijkt een actietoewijzing heel erg op een astoewijzing.

16
00:00:55,290 --> 00:00:57,720
‫U kunt er een toets of een knop aan toewijzen.

17
00:00:57,720 --> 00:01:03,420
‫En net als een axis mapping, vereist het een functie die kan worden gebonden aan de action mapping.

18
00:01:03,420 --> 00:01:07,440
‫Nu vuren axis mappings elk frame van het spel af.

19
00:01:07,440 --> 00:01:12,840
‫Ze zijn als de tic-functie en de zwevende waarde die wordt doorgegeven, verandert afhankelijk van de knoppen die

20
00:01:12,840 --> 00:01:13,590
‫worden ingedrukt.

21
00:01:13,590 --> 00:01:15,930
‫Action mappings zijn iets anders.

22
00:01:15,960 --> 00:01:22,740
‫Een callback-functie die is gebonden aan een actietoewijzing, heeft geen invoerparameters nodig en het enige dat er gebeurt, is dat wanneer u op

23
00:01:22,740 --> 00:01:25,200
‫de knop drukt, de functie wordt aangeroepen.

24
00:01:25,200 --> 00:01:29,430
‫Wat er binnen de functie gebeurt, is aan ons als ontwikkelaar.

25
00:01:29,430 --> 00:01:31,590
‫Nu zijn actietoewijzingen eenmalig.

26
00:01:31,590 --> 00:01:33,030
‫Ze gebeuren niet elk frame.

27
00:01:33,030 --> 00:01:35,790
‫Ze gebeuren maar één keer als je op de knop drukt.

28
00:01:35,790 --> 00:01:40,950
‫Dus als u de knop loslaat en nogmaals indrukt, wordt de functie opnieuw aangeroepen.

29
00:01:40,980 --> 00:01:47,280
‫Toen we nu functies aan de astoewijzingen bonden, gebruikten we de bindas voor actietoewijzingen. We gebruiken een

30
00:01:47,280 --> 00:01:52,650
‫functie genaamd bindactie en er zijn invoer nodig die vergelijkbaar is met de bindas.

31
00:01:52,650 --> 00:01:56,400
‫Het neemt de naam van de actietoewijzing als een letterlijke tekenreeks.

32
00:01:56,430 --> 00:01:58,710
‫Het vereist ook een verwijzing naar de klas.

33
00:01:58,710 --> 00:02:04,470
‫We binden de functie waarvoor we dit kunnen gebruiken, en er is natuurlijk een callback-functie voor nodig.

34
00:02:04,470 --> 00:02:11,580
‫Nu is er een extra parameter die de bind-as niet nodig heeft als een enum-constante die aangeeft of we willen

35
00:02:11,580 --> 00:02:17,130
‫dat deze functie wordt aangeroepen wanneer we op de knop drukken of wanneer we de knop

36
00:02:17,130 --> 00:02:17,640
‫loslaten.

37
00:02:17,640 --> 00:02:24,000
‫Er zijn dus twee opties voor deze invoerparameter, de enum-constante, i. e. ingedrukt en de enum constante,

38
00:02:24,000 --> 00:02:25,350
‫i. e. uitgegeven.

39
00:02:25,350 --> 00:02:31,110
‫Dit betekent dat we bindactie doorgeven in i kunnen noemen. e. ingedrukt als we een callback-functie willen binden voor wanneer we

40
00:02:31,110 --> 00:02:36,960
‫op de knop drukken en in plaats daarvan als we i. e. vrijgegeven, dan zou onze callback-functie

41
00:02:36,960 --> 00:02:40,380
‫worden aangeroepen wanneer de knop werd losgelaten voor onze vuurfunctie.

42
00:02:40,380 --> 00:02:42,900
‫We maken ons zorgen wanneer we op de knop drukken.

43
00:02:42,900 --> 00:02:46,890
‫Laten we dus een vuurfunctie maken en deze koppelen aan de vuuractietoewijzing.

44
00:02:46,890 --> 00:02:53,490
‫Nu ben ik hier in de basisspawn en de reden dat ik hier in de basisvijver ben, is omdat deze vuurfunctie iets

45
00:02:53,490 --> 00:02:57,270
‫is dat we kunnen gebruiken in de tankklasse en in de torenklasse.

46
00:02:57,270 --> 00:03:03,030
‫Dus als we het hier in de basisvijver plaatsen, dan zullen zowel Tank als toren deze functie erven.

47
00:03:03,030 --> 00:03:08,850
‫En aangezien zowel de tank als de toren projectielen gaan afvuren, kunnen ze gewoon de functie

48
00:03:08,850 --> 00:03:10,230
‫erven en gebruiken.

49
00:03:10,260 --> 00:03:16,530
‫Omdat ik nu toegang wil tot de functie in beide onderliggende klassen, kan ik deze functie hier in de

50
00:03:16,530 --> 00:03:19,500
‫beschermde sectie plaatsen, net zoals het torentje draaien.

51
00:03:19,500 --> 00:03:26,220
‫Dus onder draaitoren ga ik een ongeldige functie maken met de naam vuur die geen invoer nodig heeft

52
00:03:26,220 --> 00:03:30,780
‫en we kunnen doorgaan en de vuurfunctie definiëren op basis van CPP.

53
00:03:30,780 --> 00:03:36,990
‫Dus hier is gebaseerd op CPP en net onder de draaitoren, ik ga de vuurfunctie plaatsen en

54
00:03:36,990 --> 00:03:41,430
‫we moeten deze functienaam volledig kwalificeren en er een functielichaam aan geven.

55
00:03:41,430 --> 00:03:43,680
‫Dus nu hebben we een vuurfunctie.

56
00:03:43,680 --> 00:03:47,040
‫De volgende stap is nu om dit te binden aan een action mapping.

57
00:03:47,040 --> 00:03:53,190
‫Nu willen we deze functie alleen binden in de tankklasse omdat de tank de enige klasse is

58
00:03:53,190 --> 00:03:54,720
‫die gebruikersinvoer zal ontvangen.

59
00:03:54,720 --> 00:03:59,610
‫We zullen later de vuurfunctie in de torenklasse aanroepen, maar dat zal het resultaat zijn van

60
00:03:59,610 --> 00:04:02,820
‫code die we maken en niet als resultaat van gebruikersinvoer.

61
00:04:02,820 --> 00:04:08,730
‫Dus we zijn hier in Tank CP en we gaan dit binden en de spelerinvoercomponent instellen, net zoals

62
00:04:08,730 --> 00:04:10,290
‫we de bindas gebruikten.

63
00:04:10,290 --> 00:04:12,900
‫We gaan dus de spelerinvoercomponent gebruiken.

64
00:04:12,900 --> 00:04:18,720
‫Dus de spelerinvoercomponent en de functie wordt een bindactie.

65
00:04:18,720 --> 00:04:24,150
‫Nu wordt de eerste invoer de letterlijke tekenreeks, die we zoals gewoonlijk in een tekstmacro zullen

66
00:04:24,150 --> 00:04:24,780
‫inpakken.

67
00:04:24,780 --> 00:04:27,810
‫En deze actiemapping wordt vuur genoemd.

68
00:04:27,960 --> 00:04:34,080
‫Nu wordt de volgende parameter die enum-constante die bepaalt of we willen dat deze functie wordt aangeroepen

69
00:04:34,080 --> 00:04:39,000
‫wanneer we op de knop drukken of wanneer we de knop loslaten.

70
00:04:39,000 --> 00:04:42,150
‫En we gaan gebruiken, ik onderstreep ingedrukt.

71
00:04:43,170 --> 00:04:46,260
‫Omdat we willen dat onze functie wordt aangeroepen als we op de knop drukken.

72
00:04:46,260 --> 00:04:49,520
‫Nu, het volgende is het gebruikersklasse-object dat dit gaat worden.

73
00:04:49,530 --> 00:04:55,620
‫En tot slot hebben we onze terugbelfunctie zodat we kunnen spreken van een tankbrand.

74
00:04:55,770 --> 00:05:00,690
‫En nu is onze vuurfunctie gebonden aan de vuuractie-mapping.

75
00:05:00,690 --> 00:05:07,200
‫We weten dus dat onze vuurfunctie gebonden is aan het in kaart brengen van vuuracties, maar we willen graag wat visuele bevestiging

76
00:05:07,200 --> 00:05:09,900
‫en dat is wat je uitdaging zal zijn.

77
00:05:09,900 --> 00:05:14,130
‫Dus in de vuurfunctie wil ik dat je een debugbol tekent.

78
00:05:14,130 --> 00:05:19,440
‫We hebben al gezien hoe u dit moet doen, dus ga uw gang en vul de parameters in met waarden waarvan u denkt

79
00:05:19,440 --> 00:05:20,640
‫dat ze geschikt zijn.

80
00:05:20,670 --> 00:05:24,030
‫Gebruik de locatie van het spawnpunt van het projectiel.

81
00:05:24,270 --> 00:05:30,210
‫Nu is het spawnpunt van het projectiel een gebruiksscènecomponent en je hebt gezien dat componenten een functie hebben

82
00:05:30,210 --> 00:05:32,100
‫met de naam componentlocatie ophalen.

83
00:05:32,100 --> 00:05:33,780
‫Dit levert een F-vector op.

84
00:05:33,810 --> 00:05:38,220
‫Dit is wat je kunt gebruiken om de locatie van het projectiel-spawnpunt te krijgen.

85
00:05:38,220 --> 00:05:45,630
‫Als je nu teken debug bol aanroept, gebruik dan een duur van ongeveer 3 seconden zodat we die bol een tijdje

86
00:05:45,630 --> 00:05:47,760
‫kunnen zien voordat hij verdwijnt.

87
00:05:47,760 --> 00:05:50,460
‫Pauzeer de video en doe dit nu.

88
00:05:53,360 --> 00:05:53,550
‫Oké.

89
00:05:53,660 --> 00:05:56,810
‫Dus ik ben hier terug in Bass Pond en hier in Bass Pond.

90
00:05:57,110 --> 00:06:00,770
‫CP Ik ga debug-helpers tekenen.

91
00:06:00,770 --> 00:06:03,500
‫Dus we hebben toegang om een debug-bol te tekenen.

92
00:06:03,500 --> 00:06:07,010
‫Dus ik ga zeggen, teken debug-helpers.

93
00:06:08,240 --> 00:06:12,320
‫En nu hier beneden in de vuurfunctie, kunnen we de debug-bol tekenen.

94
00:06:12,350 --> 00:06:18,050
‫Het eerste dat ik echter wil doen, is de locatie van het spawn-punt van het projectiel krijgen.

95
00:06:18,080 --> 00:06:26,240
‫Nu kan ik hiervoor een lokale f-vector maken en ik kan deze projectiel-spawn-puntlocatie noemen en ik kan

96
00:06:26,240 --> 00:06:29,870
‫het initialiseren met behulp van het projectiel-spawn-punt.

97
00:06:32,030 --> 00:06:35,780
‫En bellen om de locatie van de component te krijgen.

98
00:06:35,780 --> 00:06:43,100
‫Dus nu heb ik de locatie van het spawn-punt van het projectiel en dit is wat ik kan gebruiken bij het aanroepen van draw

99
00:06:43,100 --> 00:06:43,850
‫debug sphere.

100
00:06:43,850 --> 00:06:46,130
‫Dus ik ga draw debug sphere noemen.

101
00:06:47,450 --> 00:06:53,720
‫En voor de eerste input hebben we de wereld nodig en we weten dat we de wereld kunnen krijgen met get world next.

102
00:06:53,720 --> 00:06:59,810
‫We hebben het middelpunt van de bol nodig dat onze locatie voor het spawnen van het projectiel wordt.

103
00:06:59,810 --> 00:07:04,190
‫Dus dat zal ik doorgeven als de tweede parameter.

104
00:07:04,190 --> 00:07:06,190
‫En vervolgens hebben we de straal van de bol nodig.

105
00:07:06,200 --> 00:07:08,330
‫Nu krijg ik een kleine bol.

106
00:07:08,480 --> 00:07:15,920
‫Ik geef het een straal van zeg 25 F voor het aantal segmenten dat ik gewoon 12 ga gebruiken en voor de

107
00:07:15,920 --> 00:07:17,690
‫kleur kan ik F-kleur gebruiken.

108
00:07:18,680 --> 00:07:21,380
‫Lees nu vier trekken aanhoudende lijnen.

109
00:07:21,380 --> 00:07:27,500
‫We laten onze regels 3 seconden rondhangen, zodat we dit onwaar kunnen maken, omdat we niet willen dat ze

110
00:07:27,500 --> 00:07:28,910
‫voor altijd blijven bestaan.

111
00:07:28,940 --> 00:07:36,380
‫We gaan deze debug-bol een levensduur van drie F geven. Dus laten we doorgaan en dit nu compileren en ik ga

112
00:07:36,380 --> 00:07:42,230
‫op play drukken en klikken en nu kunnen we onze debug-bol zien en natuurlijk verdwijnt deze na

113
00:07:42,230 --> 00:07:43,310
‫3 seconden.

114
00:07:43,640 --> 00:07:49,880
‫Dit is een goede bevestiging dat onze actie-mapping werkt en het geeft ons ook verificatie van

115
00:07:49,880 --> 00:07:53,450
‫de locatie van het spawn-punt van het projectiel.

116
00:07:53,450 --> 00:07:59,600
‫Dus zodra we daadwerkelijk projectielen gaan spawnen, weten we dat ze op de juiste locatie zullen

117
00:07:59,600 --> 00:08:02,420
‫spawnen, zoals aangegeven door de debug-bol.

118
00:08:02,420 --> 00:08:03,500
‫Dit is dus geweldig.

119
00:08:03,650 --> 00:08:09,470
‫Dus in deze video hebben we een vuurfunctie gemaakt en deze gekoppeld aan de vuuractie-mapping.

120
00:08:09,740 --> 00:08:15,800
‫En om te bewijzen dat het werkte, hebben we een debug-bol getekend bij het spawnpunt van het projectiel wanneer

121
00:08:15,830 --> 00:08:21,710
‫we op de linkermuisknop klikken, zodat we een vuurfunctie hebben, we zijn bijna klaar om projectielen te spawnen.

122
00:08:21,710 --> 00:08:25,250
‫En we hebben deze functie ook in de basis pong-klasse geplaatst.

123
00:08:25,250 --> 00:08:27,980
‫Zo kan onze toren er ook gebruik van maken.

124
00:08:27,980 --> 00:08:32,990
‫Dus in de volgende video gaan we bespreken hoe onze toren deze functie gaat gebruiken.

125
00:08:33,530 --> 00:08:34,460
‫Ik zie je snel.

