﻿1
00:00:04,260 --> 00:00:05,340
‫Welkom terug.

2
00:00:05,700 --> 00:00:11,550
‫Nu hebben we een spelmodus en we willen de spelmodus gebruiken om te bepalen wanneer we het spel kunnen starten.

3
00:00:11,580 --> 00:00:17,700
‫Nu hebben sommige games een vertraging of een afteltimer die begint wanneer de game begint.

4
00:00:17,700 --> 00:00:23,460
‫En na een bepaalde tijd mag de speler het personage of in ons geval de

5
00:00:23,460 --> 00:00:25,450
‫tank rond de wereld verplaatsen.

6
00:00:25,470 --> 00:00:28,500
‫Dus dat gaan we in deze video implementeren.

7
00:00:28,530 --> 00:00:35,520
‫Dit houdt in dat je eerst de invoer moet uitschakelen, zodat we niet kunnen bewegen wanneer het spel voor het

8
00:00:35,520 --> 00:00:41,860
‫eerst begint en dan gaan we een timer instellen en na een bepaalde tijd kunnen we invoer inschakelen.

9
00:00:41,880 --> 00:00:47,870
‫Dus laten we teruggaan naar het afstemmen van de spelmodus Tanks en hier een paar dingen toevoegen.

10
00:00:47,880 --> 00:00:54,030
‫Ten eerste wil ik een float toevoegen voor de hoeveelheid tijd die moet verstrijken wanneer het spel begint voordat we

11
00:00:54,030 --> 00:00:55,380
‫kunnen beginnen met bewegen.

12
00:00:55,410 --> 00:01:03,120
‫Dus deze float wordt startvertraging genoemd en ik ga dit initialiseren naar drie punt F, zodat we 3 seconden

13
00:01:03,120 --> 00:01:06,800
‫moeten wachten voordat we het spel kunnen starten.

14
00:01:06,810 --> 00:01:12,420
‫Nu, zodra het spel begint, wil ik deze timer starten, wat betekent dat ik een functie wil die

15
00:01:12,420 --> 00:01:16,510
‫deze timer start, en ik ga hier ook een privéfunctie van maken.

16
00:01:16,530 --> 00:01:21,180
‫Ik ga hier een ongeldige functie van maken genaamd 'handle game start'.

17
00:01:21,210 --> 00:01:25,200
‫Nu kan ik het starten van het spel in de spelmodus Tune Tanks implementeren.

18
00:01:25,470 --> 00:01:28,320
‫Ga hier naar beneden onder begin met spelen.

19
00:01:28,770 --> 00:01:36,090
‫Nu zal ik niet vergeten om de naam van de spelmodusklasse van tune tanks toe te voegen en nu heb ik een startfunctie voor het spelen

20
00:01:36,090 --> 00:01:36,930
‫van games.

21
00:01:37,170 --> 00:01:40,410
‫Nu zou de plaats om dit te noemen Begin Play zijn.

22
00:01:40,620 --> 00:01:43,590
‫Sinds Begin Spelen wordt aan het begin van het spel genoemd.

23
00:01:43,590 --> 00:01:47,180
‫Dus ik ga handvat spel noemen, begin hier en begin met spelen.

24
00:01:47,190 --> 00:01:52,110
‫En aangezien we hier aan het begin van het spel een aantal dingen doen, waarbij de tank

25
00:01:52,110 --> 00:01:58,050
‫en de afstemming van tanks, speler en controllervariabelen worden ingesteld, zou ik deze willen verplaatsen naar het begin van het spel.

26
00:01:58,050 --> 00:02:03,600
‫Dus ik ga die helemaal naar beneden verplaatsen naar de start van het spel en op die manier zal de spelercontroller

27
00:02:03,600 --> 00:02:08,940
‫voor tank en tune tanks worden ingesteld, omdat we het begin van het spel hier noemen en beginnen met spelen.

28
00:02:08,940 --> 00:02:15,990
‫Dus hier wil ik een afteltimer starten waarna we gebruikersinvoer kunnen inschakelen.

29
00:02:15,990 --> 00:02:21,480
‫Voordat we de timer starten, ga ik de invoer uitschakelen, zodat we de tank nog niet kunnen verplaatsen.

30
00:02:21,690 --> 00:02:24,420
‫En dat vereist onze functie.

31
00:02:24,420 --> 00:02:29,670
‫We hebben hier in tune-tanks geplaatst, spelercontroller genaamd set player enabled state.

32
00:02:29,670 --> 00:02:33,690
‫En dat betekent dat ik tune tanks, player controller ga gebruiken.

33
00:02:33,690 --> 00:02:38,400
‫En als ik de spelercontroller van tune tank ga gebruiken, is het een goed idee om ervoor te zorgen dat deze geldig is.

34
00:02:38,400 --> 00:02:46,200
‫Dus ik ga zeggen als tune tanks, player, controller en als we de binnenkant

35
00:02:46,200 --> 00:02:57,570
‫van deze if-statement bereiken, dan kan ik tune tanks, player controller en call set player enabled status nemen en in false doorgeven.

36
00:02:57,690 --> 00:03:00,720
‫En op die manier kan onze tank niet bewegen.

37
00:03:00,720 --> 00:03:06,780
‫En ik zie de rode kronkels en dat komt omdat ik zei tanktanks, spelercontroller in plaats van tanks af te

38
00:03:06,780 --> 00:03:07,380
‫stemmen.

39
00:03:07,830 --> 00:03:11,250
‫Dus als ik het correct schrijf, krijg ik daar geen fouten.

40
00:03:11,250 --> 00:03:13,690
‫Dus nu moeten we een timer starten.

41
00:03:13,710 --> 00:03:20,850
‫Nu weten we dat timers het gebruik van een F-timerhandle inhouden en we kunnen een F-timerhandle maken in plaats

42
00:03:20,850 --> 00:03:25,110
‫van een lidvariabele te hebben die bij de klasse hoort.

43
00:03:25,200 --> 00:03:31,470
‫Dus ik ga door en doe dat en ik noem deze speler timer inschakelen.

44
00:03:31,800 --> 00:03:38,340
‫En vervolgens moeten we nu een timer instellen voor de callback-functie voor onze timer. Ik wil graag de set

45
00:03:38,340 --> 00:03:45,390
‫player enabled state gebruiken, maar de set player enabled state is een functie die een invoer van het type boolean vereist.

46
00:03:45,990 --> 00:03:51,900
‫Nu hebben we niet gezien hoe een timer in te stellen met behulp van een callback waarvoor invoerparameters vereist zijn.

47
00:03:51,900 --> 00:03:56,190
‫Dit gaat gepaard met een nieuw concept dat een timer-afgevaardigde wordt genoemd.

48
00:03:56,190 --> 00:03:59,310
‫Laten we dus eens kijken naar het timersysteem van Unreal Engine.

49
00:03:59,310 --> 00:04:07,080
‫Nogmaals, we weten dat er een wereldtimermanager is die onze timers beheert en een ingestelde timerfunctie heeft.

50
00:04:07,170 --> 00:04:11,280
‫Nu zijn er meerdere overbelastingen van de ingestelde timerfunctie.

51
00:04:11,370 --> 00:04:13,410
‫We hebben er al een gezien.

52
00:04:13,440 --> 00:04:16,710
‫Nu ga ik het hebben over een andere versie van deze functie.

53
00:04:16,710 --> 00:04:24,570
‫En deze versie vereist een timer-handle, een timer-rate of een vertragingstijd waarin we moeten wachten voordat

54
00:04:24,570 --> 00:04:26,760
‫onze callback-functie wordt aangeroepen.

55
00:04:26,760 --> 00:04:32,550
‫En in plaats van het adres van een callback-functie rechtstreeks te nemen, kan het een timer-afgevaardigde worden

56
00:04:32,550 --> 00:04:33,270
‫genoemd.

57
00:04:33,270 --> 00:04:40,440
‫Dit is een structuur van het type F timer-delegate, waarmee we een object kunnen maken dat er rechtstreeks een functie aan

58
00:04:40,440 --> 00:04:41,490
‫kan binden.

59
00:04:41,490 --> 00:04:45,600
‫En timer-afgevaardigden kunnen functies binden waarvoor invoerparameters nodig zijn.

60
00:04:45,600 --> 00:04:53,370
‫Nu kunnen we een EF-timer gedelegeerde variabele maken en deze initialiseren met behulp van de functie Create you object

61
00:04:53,370 --> 00:04:55,080
‫van f timer delegate.

62
00:04:55,110 --> 00:05:00,990
‫Hiermee wordt een nieuwe timer-afgevaardigde gemaakt en geïnitialiseerd op basis van wat we tussen haakjes doorgeven.

63
00:05:00,990 --> 00:05:03,810
‫Hiervoor is een gebruikersobject nodig dat van is.

64
00:05:03,860 --> 00:05:08,110
‫Natuurlijk, de klasse waarop onze callback-functie bestaat.

65
00:05:08,120 --> 00:05:15,110
‫En vervolgens neemt het het adres van de callback-functie zelf, gevolgd door eventuele invoerwaarden die we willen

66
00:05:15,110 --> 00:05:18,450
‫doorgeven aan onze callback zodra deze wordt aangeroepen.

67
00:05:18,470 --> 00:05:24,830
‫Van daaruit kunnen we de timer instellen vanuit de wereldtimermanager en de overbelasting gebruiken die een timer-afgevaardigde nodig

68
00:05:24,830 --> 00:05:25,450
‫heeft.

69
00:05:25,460 --> 00:05:32,300
‫Deze overbelasting vereist de timer-handle zelf, de timer-delegate, de afspeelsnelheid of een float die de vertraging bepaalt voordat

70
00:05:32,300 --> 00:05:38,630
‫onze callback wordt aangeroepen, en vervolgens een boolean om te bepalen of onze timer al dan niet

71
00:05:38,630 --> 00:05:43,310
‫moet herhalen, zodat we weten hoe we een F timer afgevaardigde.

72
00:05:43,310 --> 00:05:49,610
‫Dus ik zou graag willen dat je er een maakt in de startfunctie van het handvat in onze nieuwe if-instructie.

73
00:05:49,610 --> 00:05:54,200
‫Maak dus een lokale f timer delegate aan en gebruik f timer delegate.

74
00:05:54,200 --> 00:05:55,640
‫Maak je object.

75
00:05:55,640 --> 00:06:01,610
‫Nu moeten we een gebruikersobject doorgeven en meestal hebben we dit als gebruikersobject gebruikt, maar

76
00:06:01,610 --> 00:06:05,870
‫de functie die we willen aanroepen, bestaat op de spelercontroller.

77
00:06:05,870 --> 00:06:12,320
‫Dus geef de spelercontroller met variabele tune-tanks door als de eerste invoer die het gebruikersobject zal zijn

78
00:06:12,320 --> 00:06:18,890
‫en de callback-functie zal worden ingesteld voor de speler ingeschakeld staat die functie die we hebben toegevoegd aan

79
00:06:18,890 --> 00:06:20,300
‫onze aangepaste spelercontroller.

80
00:06:20,300 --> 00:06:25,730
‫Vergeet het adres van de operator niet en als derde invoer gaan we de waarde doorgeven.

81
00:06:25,730 --> 00:06:32,330
‫Toegegeven, dit is wat wordt doorgegeven aan de status 'set player ingeschakeld' wanneer onze callback aan het einde van de

82
00:06:32,330 --> 00:06:33,590
‫timer wordt gebeld.

83
00:06:33,590 --> 00:06:36,710
‫Dus pauzeer de video en probeer dit nu eens.

84
00:06:39,560 --> 00:06:46,580
‫Dus net onder onze timer-handle ga ik een lokale F-timer-afgevaardigde maken en ik

85
00:06:46,580 --> 00:06:50,540
‫ga deze speler inschakelen timer-afgevaardigde noemen.

86
00:06:51,140 --> 00:06:51,710
‫Dat is goed.

87
00:06:51,710 --> 00:06:53,030
‫Als je het iets anders noemde.

88
00:06:53,030 --> 00:07:00,200
‫Nu ga ik dit initialiseren met f timer, delegate, create you object.

89
00:07:00,470 --> 00:07:06,590
‫En hiervoor is eerst een gebruikersobject nodig en dat wordt onze spelercontroller voor tune tanks.

90
00:07:06,590 --> 00:07:11,300
‫Dus ik ga zeggen tune tanks player controller als de eerste input.

91
00:07:11,390 --> 00:07:19,250
‫En voor de tweede hebben we onze callback-functie nodig en dat wordt een tune tanks

92
00:07:19,910 --> 00:07:23,360
‫player, controller set player enabled state.

93
00:07:23,360 --> 00:07:30,290
‫En ik kan het niet vergeten, ik heb het adres van de operator nodig voor dit functieadres en de waarde die

94
00:07:30,290 --> 00:07:34,670
‫ik zou willen doorgeven aan deze callback-functie zal op die manier waar zijn.

95
00:07:34,670 --> 00:07:41,120
‫Aan het einde van de vertragingstijd, wanneer deze callback true wordt genoemd, wordt de waarde doorgegeven aan

96
00:07:41,120 --> 00:07:42,290
‫de callback-functie.

97
00:07:42,290 --> 00:07:48,770
‫Nu ben ik klaar om Set Timer te bellen, wat betekent dat ik World Timer Manager moet bellen.

98
00:07:48,950 --> 00:07:51,530
‫En vanaf daar kan ik de timer instellen.

99
00:07:52,070 --> 00:07:59,030
‫En de functie-overbelasting die we gebruiken, heeft eerst een timer-handvat nodig en dat wordt een timer-handvat voor het inschakelen

100
00:07:59,060 --> 00:08:00,560
‫van de speler.

101
00:08:00,590 --> 00:08:04,370
‫De volgende input die ik ga doorgeven is de afgevaardigde.

102
00:08:04,370 --> 00:08:08,630
‫Dus dat wordt player enable, timer delegate.

103
00:08:10,130 --> 00:08:10,520
‫Volgende.

104
00:08:10,520 --> 00:08:16,700
‫We hebben onze vertragingstijd nodig en dat wordt de startvertraging, de float die we zojuist hebben gemaakt.

105
00:08:16,730 --> 00:08:20,120
‫Dus vervolgens passeer ik met startvertraging.

106
00:08:20,990 --> 00:08:27,590
‫En tot slot wil ik niet dat deze timer een lus maakt, dus ik ga 'false' doorgeven zodat we geen

107
00:08:27,590 --> 00:08:28,430
‫lusgedrag krijgen.

108
00:08:29,300 --> 00:08:33,020
‫Nu ga ik door en laat deze invoer inspringen, zodat het er mooi uitziet.

109
00:08:33,710 --> 00:08:38,690
‫En nu noemen we timer instellen met onze nieuwe timer-afgevaardigde.

110
00:08:38,690 --> 00:08:45,380
‫En aan het einde van deze vertragingstijd zouden we onze callback-functie set player-enabled state moeten krijgen aangeroepen met de

111
00:08:45,380 --> 00:08:51,440
‫waarde true die nu is doorgegeven, aangezien de startvertraging 3 seconden is en we de set player

112
00:08:51,440 --> 00:08:55,190
‫enabled state-passing in false aanroepen voordat we onze timer instellen.

113
00:08:55,190 --> 00:09:00,920
‫Als we op play drukken, zouden we niet moeten kunnen bewegen totdat deze vertraging van drie seconden voorbij is.

114
00:09:00,920 --> 00:09:03,590
‫Dus laten we dit compileren en kijken hoe het werkt.

115
00:09:04,100 --> 00:09:09,140
‫Dus ik ga door en druk op play en ik probeer me te verplaatsen, maar dat lukt niet.

116
00:09:09,140 --> 00:09:12,470
‫En na 3 seconden kan ik ineens bewegen.

117
00:09:12,500 --> 00:09:14,210
‫En kijk hier ook eens naar.

118
00:09:14,240 --> 00:09:17,330
‫Merk op dat mijn cursor het vizier is.

119
00:09:17,330 --> 00:09:23,000
‫Het is misschien moeilijk te zien op het scherm, maar je zou het prima op je scherm moeten kunnen zien.

120
00:09:23,000 --> 00:09:27,470
‫En dit maakt het voor mij een stuk gemakkelijker om mijn tanks te richten en te besturen.

121
00:09:27,470 --> 00:09:28,820
‫Rotatie van het torentje.

122
00:09:29,210 --> 00:09:30,140
‫Perfect.

123
00:09:30,140 --> 00:09:36,440
‫Dus samenvattend hebben we een functie voor het starten van een game gemaakt voor de spelmodus en we noemen dit en

124
00:09:36,440 --> 00:09:37,370
‫beginnen met spelen.

125
00:09:37,580 --> 00:09:45,830
‫En we hebben ook een timer ingesteld met behulp van een timer-afgevaardigde waarop we onze set player-enabled state-functie op de

126
00:09:45,830 --> 00:09:47,180
‫spelercontroller hebben gebonden.

127
00:09:47,180 --> 00:09:53,810
‫Hierdoor konden we een functie-callback voor onze timer hebben die invoerparameters nodig heeft en we gebruiken deze om gebruikersinvoer mogelijk

128
00:09:53,810 --> 00:09:58,340
‫te maken na een vertraging van drie seconden wanneer het spel begint.

129
00:09:58,370 --> 00:10:03,470
‫Dit kan frustrerend zijn voor een speler als ze niet een soort van visuele cue hebben, om ze te

130
00:10:03,470 --> 00:10:05,690
‫laten weten dat invoer niet is ingeschakeld.

131
00:10:05,690 --> 00:10:08,150
‫Iets als een aftelling op het scherm.

132
00:10:08,150 --> 00:10:10,640
‫Dus daar zullen we in toekomstige video's voor zorgen.

133
00:10:10,640 --> 00:10:12,410
‫Maar voor nu gefeliciteerd.

134
00:10:12,410 --> 00:10:18,170
‫U weet nu hoe u een functie kunt binden die invoerparameters nodig heeft voor een timer-gemachtigde.

135
00:10:18,170 --> 00:10:19,640
‫Ik zie je in de volgende video.

