﻿1
00:00:04,350 --> 00:00:05,010
‫Hallo en welkom.

2
00:00:05,010 --> 00:00:11,900
‫Het onderwerp van deze lezing wordt de schade-functie van de acteur en hoe we die noemen.

3
00:00:11,910 --> 00:00:14,460
‫Laten we erin duiken en er alles over te weten komen.

4
00:00:15,830 --> 00:00:21,050
‫Dus om schade aan iets te kunnen toebrengen, moeten we iets hebben dat we

5
00:00:21,050 --> 00:00:22,010
‫kunnen raken.

6
00:00:22,520 --> 00:00:29,210
‫Dus laten we naar onze inhoudbrowserroute gaan en een van de BP-shooter-personages binnenhalen.

7
00:00:29,870 --> 00:00:36,110
‫Want wat er eigenlijk gebeurt, is dat als je een personage in de scène brengt, Unreal dit personage

8
00:00:36,110 --> 00:00:42,140
‫automatisch luchtgestuurd maakt en degenen die spawnen bij het begin van de speler, worden door de

9
00:00:42,140 --> 00:00:43,070
‫speler bestuurd.

10
00:00:43,190 --> 00:00:44,600
‫Dus dat is geweldig.

11
00:00:44,600 --> 00:00:45,830
‫Dat is precies het gedrag dat we willen.

12
00:00:45,860 --> 00:00:51,140
‫Als ik doorga en op alt p druk, zul je merken dat ik in het verkeerde spawn-punt zit, dus misschien

13
00:00:51,140 --> 00:00:53,750
‫wil ik deze start van de tweede speler verwijderen.

14
00:00:54,140 --> 00:00:56,900
‫Als ik nu op LP druk, staat het op de juiste locatie.

15
00:00:57,200 --> 00:00:58,580
‫Daar is mijn vijand.

16
00:00:58,580 --> 00:01:00,020
‫Ik kan op de vijand schieten.

17
00:01:00,020 --> 00:01:03,100
‫Ik krijg het treffers effect, maar uiteraard richt ik geen schade aan.

18
00:01:03,110 --> 00:01:04,040
‫Nog niet in ieder geval.

19
00:01:04,670 --> 00:01:07,130
‫En schade aanrichten is een proces dat uit twee delen bestaat.

20
00:01:07,520 --> 00:01:12,440
‫Het eerste deel is het verzenden van de schade en het tweede deel is het ontvangen.

21
00:01:12,680 --> 00:01:18,440
‫In deze lezing gaan we het hebben over het verzenden van schade aan de speler en de functieaanroepen die

22
00:01:18,440 --> 00:01:19,100
‫daarbij horen.

23
00:01:19,910 --> 00:01:28,040
‫Dus de belangrijkste waar we naar gaan kijken, is de acteur Dot H en we zijn op zoek naar

24
00:01:28,040 --> 00:01:30,560
‫een functieaanroep genaamd schade nemen.

25
00:01:31,430 --> 00:01:35,810
‫En je kunt hier zien dat dit deze virtuele functie is, hier wordt een float geretourneerd.

26
00:01:35,930 --> 00:01:41,630
‫Wat het teruggeeft, is de werkelijke schade die aan de acteur is toegebracht, het werkelijke bedrag dat echt is toegepast.

27
00:01:42,500 --> 00:01:50,750
‫En wat erin gaat is het schadebedrag, een schadegebeurtenis, die ons daar meer informatie over geeft, de schade die

28
00:01:50,750 --> 00:01:51,980
‫is ontstaan.

29
00:01:52,880 --> 00:01:54,380
‫We hebben een aanstichter.

30
00:01:54,620 --> 00:01:58,460
‫Dus dat wil zeggen wie de controller was die verantwoordelijk was voor het veroorzaken van deze schade?

31
00:01:59,120 --> 00:02:03,620
‫En dan de veroorzaakte schade, waarvoor was de acteur verantwoordelijk?

32
00:02:03,890 --> 00:02:06,350
‫Dus in dit geval kan het een pistool zijn.

33
00:02:06,350 --> 00:02:10,130
‫Of zegt het hier het projectiel dat explodeerde, de rots die op je landde?

34
00:02:10,700 --> 00:02:15,590
‫In dit geval zal het pistool waarmee je werd neergeschoten de acteur zijn die verantwoordelijk was.

35
00:02:16,100 --> 00:02:18,710
‫Dus dat is schade in een notendop.

36
00:02:18,980 --> 00:02:24,110
‫Het meeste daarvan zou voor u vrij eenvoudig moeten zijn om samen te stellen, met uitzondering

37
00:02:24,110 --> 00:02:25,220
‫van deze schadegebeurtenisstructuur.

38
00:02:25,220 --> 00:02:26,450
‫En dat is een beetje ingewikkelder.

39
00:02:26,450 --> 00:02:32,080
‫Dus laten we eens kijken naar deze schadegebeurtenisstructuur en kijken wat we kunnen doen?

40
00:02:32,090 --> 00:02:34,130
‫Hoe gaat het worden samengesteld?

41
00:02:34,130 --> 00:02:35,750
‫Hoe gaan we dit combineren?

42
00:02:36,110 --> 00:02:42,310
‫Nu is het niet meteen duidelijk, maar er zijn eigenlijk twee subtypes voor deze schadegebeurtenis.

43
00:02:42,320 --> 00:02:47,300
‫In de praktijk ga je niet echt een EF-schadegebeurtenis

44
00:02:47,300 --> 00:02:54,230
‫creëren, maar eerder een EF-puntschadegebeurtenis, of je zou een EF radiale schadegebeurtenis creëren.

45
00:02:54,470 --> 00:02:58,160
‫Dat zijn de twee belangrijkste soorten schade die in Unreal voorkomen.

46
00:02:58,370 --> 00:03:02,300
‫Je kunt meer verschillende soorten schade maken voor je eigen aangepaste spullen.

47
00:03:02,300 --> 00:03:08,480
‫Zoals je misschien een brandschade hebt met verschillende parameters, maar in ons geval zijn we

48
00:03:08,480 --> 00:03:11,930
‫geïnteresseerd in de EF radiale radiale en puntschade.

49
00:03:11,930 --> 00:03:18,350
‫Dus weer radiaal zou zoiets zijn als een granaat die afgaat, in welk geval je wilt zeggen, oké, waar

50
00:03:18,350 --> 00:03:20,950
‫is de straal, wat is de val?

51
00:03:20,960 --> 00:03:27,440
‫Al dat soort dingen waar de puntschade is, omdat het veel geschikter klinkt voor dingen als

52
00:03:27,440 --> 00:03:28,070
‫geweren.

53
00:03:28,550 --> 00:03:35,900
‫Dus we gaan een EF-puntschadegebeurtenis creëren en we gaan op zoek naar de constructor, hier is de

54
00:03:35,900 --> 00:03:40,040
‫constructor ervoor, en we kunnen zien wat het inhoudt.

55
00:03:40,250 --> 00:03:41,690
‫Het neemt het schadebedrag weer op.

56
00:03:41,690 --> 00:03:43,220
‫Dus dat is een beetje herhaling daar.

57
00:03:43,700 --> 00:03:48,350
‫We hebben het trefferresultaat waardoor deze puntschade is ontstaan.

58
00:03:48,950 --> 00:03:51,350
‫Dan hebben we de in schot richting.

59
00:03:51,350 --> 00:03:51,650
‫Super goed.

60
00:03:51,650 --> 00:03:52,850
‫Dat hebben we al uitgerekend.

61
00:03:52,850 --> 00:03:58,160
‫Ik dacht een beetje vooruit toen we dat deden in de vorige lezing en dan deze

62
00:03:58,160 --> 00:03:59,500
‫subklasse van schadetype.

63
00:03:59,510 --> 00:04:02,690
‫Dit kan nu worden gebruikt om meer informatie door te geven.

64
00:04:02,690 --> 00:04:08,420
‫Dus eigenlijk, in plaats van een ander type schadegebeurtenis te creëren, zou je waarschijnlijk een ander

65
00:04:08,420 --> 00:04:09,470
‫schadetype creëren.

66
00:04:09,470 --> 00:04:12,770
‫Dus misschien heb je een brandtype of iets dergelijks.

67
00:04:13,040 --> 00:04:18,950
‫In ons geval, omdat we geen enkele vorm van schade nodig hebben, doen we geen brandschade of

68
00:04:18,950 --> 00:04:20,870
‫iets extra's zoals die gifschade.

69
00:04:21,170 --> 00:04:25,070
‫Wat we dan gaan doen, is in plaats daarvan een nulpunt doorgeven aan hier.

70
00:04:25,400 --> 00:04:31,670
‫Dus laten we proberen een van deze samen te bouwen en dan zal ik je die schade-gebeurtenis laten

71
00:04:31,670 --> 00:04:32,030
‫afkoelen.

72
00:04:33,050 --> 00:04:39,650
‫Dus het eerste wat je moet doen is het type plakken, we gaan het de schadegebeurtenis noemen en dan

73
00:04:39,650 --> 00:04:41,270
‫gaan we het construeren.

74
00:04:41,660 --> 00:04:45,830
‫Dus ten eerste, de schade bedraagt, nou, we hebben er nog geen voor het wapen.

75
00:04:45,830 --> 00:04:47,870
‫We weten niet hoeveel schade het aanricht.

76
00:04:48,260 --> 00:04:50,900
‫Dus we kunnen doorgaan en wat informatie creëren.

77
00:04:50,900 --> 00:04:52,520
‫Ze hebben al een max bereik.

78
00:04:52,820 --> 00:04:54,620
‫We willen hier wat meer eigendommen.

79
00:04:54,680 --> 00:05:00,410
‫Het wordt overal een bewerking, wat ons in staat zal stellen om float-schade te zeggen.

80
00:05:00,410 --> 00:05:01,370
‫Hoeveel schade richten we aan?

81
00:05:01,370 --> 00:05:05,720
‫Ik ga het schade van tien doen en dan kunnen we dit gebruiken in de C++.

82
00:05:05,720 --> 00:05:09,050
‫Dus schade is wat we als eerste argument doorgeven.

83
00:05:09,590 --> 00:05:11,480
‫De tweede is dat hitresultaat?

84
00:05:11,480 --> 00:05:13,400
‫Gelukkig hebben we de resultaten die hit genoemd worden.

85
00:05:14,500 --> 00:05:22,390
‫Het volgende is de opnamerichting die we al hebben berekend voor onze zender op

86
00:05:22,390 --> 00:05:23,050
‫locatie.

87
00:05:24,000 --> 00:05:29,490
‫Dan gaan we kijken naar de subklasse, die gewoon een null-pointer zal zijn.

88
00:05:30,180 --> 00:05:31,740
‫Oké, dat is dus gedaan.

89
00:05:31,740 --> 00:05:36,000
‫Het volgende zou zijn om de acteur te pakken te krijgen die we proberen te beschadigen.

90
00:05:36,010 --> 00:05:38,310
‫Dat is vrij eenvoudig van de hit die je doet.

91
00:05:38,790 --> 00:05:41,340
‫Hit dot, krijg acteur hier.

92
00:05:42,150 --> 00:05:48,570
‫Maar je moet controleren of dit niet null is, want we willen niet eindigen met een null-acteur

93
00:05:48,570 --> 00:05:52,360
‫waaraan we schade proberen toe te brengen, anders crashen we.

94
00:05:53,220 --> 00:05:58,750
‫Dus je uitdaging zal zijn om die functie-check voor schade aan te roepen voor de acteur die nul is.

95
00:05:58,770 --> 00:06:04,650
‫Ten eerste willen we niet dat een null-acteur belt om schade op te lopen en te kijken of je het kunt compileren.

96
00:06:04,650 --> 00:06:06,120
‫Trekt de video en probeer het.

97
00:06:08,450 --> 00:06:08,640
‫Oké.

98
00:06:08,660 --> 00:06:09,230
‫Welkom terug.

99
00:06:09,740 --> 00:06:12,200
‫Dus we hebben ons karakter hier.

100
00:06:12,350 --> 00:06:13,520
‫Ik ga dit gewoon bellen.

101
00:06:14,000 --> 00:06:15,650
‫Ik ga dit een kleine variabele geven.

102
00:06:15,650 --> 00:06:23,900
‫Dus een acteur-aanwijzer wordt de hit-acteur en we gaan dan verder en doen hier een if-statement, in

103
00:06:23,900 --> 00:06:31,700
‫feite zeggend dat als de hit-acteur niet gelijk is aan een nul-aanwijzer, dan gaan we verder

104
00:06:31,700 --> 00:06:37,700
‫met deze hit-acteur om de take damage-functie erop aan te roepen.

105
00:06:38,450 --> 00:06:42,800
‫En we gaan het schadebedrag doen, hier zijn de eerste argumenten.

106
00:06:43,160 --> 00:06:44,600
‫Wat was de tweede?

107
00:06:44,600 --> 00:06:49,190
‫Ik ga gewoon terug naar de schade nemen en een kijkje nemen.

108
00:06:49,190 --> 00:06:54,470
‫Dus de volgende is de structuur die we hebben samengesteld voor deze schadegebeurtenis.

109
00:06:54,620 --> 00:06:56,300
‫Laten we dat even zeggen.

110
00:06:56,750 --> 00:07:00,740
‫Dan gaan we kijken naar de controller die dit heeft gemaakt.

111
00:07:00,740 --> 00:07:02,420
‫Dat is onze controller.

112
00:07:02,420 --> 00:07:05,180
‫De wapencontroller is degene die de schade aanricht.

113
00:07:05,180 --> 00:07:11,150
‫En dan is dit de aanstichter was de laatste parameter in aanvalsschade.

114
00:07:11,150 --> 00:07:18,950
‫En we willen deze struct waarschijnlijk alleen hierin construeren als de actor niet gelijk is aan nulpunten, omdat het niet nodig is

115
00:07:18,950 --> 00:07:23,540
‫als we geen actor hebben om deze schade op toe te passen.

116
00:07:24,560 --> 00:07:28,490
‫Dus laten we het gaan compileren en kijken of dit gaat werken.

117
00:07:28,850 --> 00:07:30,230
‫Ik heb dus een fout in mijn log.

118
00:07:30,260 --> 00:07:31,790
‫Laten we kijken wat er aan de hand is.

119
00:07:31,790 --> 00:07:33,440
‫Oh, ik mis alleen een puntkomma.

120
00:07:33,650 --> 00:07:34,760
‫Nou, dat is vrij eenvoudig.

121
00:07:34,760 --> 00:07:37,010
‫Een om op te lossen na de tweede act.

122
00:07:37,010 --> 00:07:38,060
‫Laten we gaan en het opnieuw proberen.

123
00:07:38,840 --> 00:07:39,230
‫Stoer.

124
00:07:39,230 --> 00:07:45,920
‫Alles is succesvol gecompileerd en we kunnen gewoon doorgaan en spelen en die set gewoon controleren.

125
00:07:46,070 --> 00:07:51,950
‫Schieten zal ons geen nulfouten geven of proberen de motor te laten crashen.

126
00:07:52,360 --> 00:07:53,660
‫Het lijkt in orde.

127
00:07:54,140 --> 00:08:00,740
‫Dus we gaan door naar de volgende lezing waar we gaan proberen de schade op deze acteur hier te ontvangen die

128
00:08:00,740 --> 00:08:03,350
‫we in het niveau C hebben geplaatst.

