﻿1
00:00:04,500 --> 00:00:05,120
‫Hallo en welkom.

2
00:00:05,130 --> 00:00:11,160
‫In deze lezing gaan we een wapen zo ontwerpen dat als we op de muisknop

3
00:00:11,160 --> 00:00:14,490
‫of de trekker drukken, we een logbericht krijgen.

4
00:00:14,490 --> 00:00:19,530
‫En dit logbericht is de eerste stap om veel andere dingen van de achterkant van deze wapenarchitectuur te

5
00:00:19,530 --> 00:00:20,310
‫laten lopen.

6
00:00:20,310 --> 00:00:22,110
‫Laten we erin duiken en kijken hoe het gedaan is.

7
00:00:23,120 --> 00:00:26,700
‫Dus we willen dat dit wapen uiteindelijk kan schieten.

8
00:00:26,720 --> 00:00:28,250
‫En dat is de kern ervan.

9
00:00:28,250 --> 00:00:32,960
‫Waarom kiezen we ervoor om het pistool als de kern van onze schietarchitectuur te gebruiken?

10
00:00:32,990 --> 00:00:38,750
‫Welnu, zoals ik al een beetje heb gezegd, willen we verschillende soorten opnamemethoden kunnen

11
00:00:38,750 --> 00:00:39,470
‫ondersteunen.

12
00:00:39,490 --> 00:00:42,350
‫Wat zijn de soorten schietmethoden die we normaal gesproken kunnen gebruiken?

13
00:00:42,470 --> 00:00:48,140
‫Dat is direct vuur, waarbij vaak via raytracing en directe zichtlijn wordt vastgesteld of een slachtoffer al

14
00:00:48,140 --> 00:00:49,610
‫dan niet is geraakt.

15
00:00:49,730 --> 00:00:52,550
‫Dus het zou gaan en zeggen, oké, ik kan die vijand zien.

16
00:00:52,580 --> 00:00:55,580
‫Het is dat de zichtlijn van het geweer naar de vijand duidelijk is.

17
00:00:55,580 --> 00:00:56,340
‫Het raakt hem.

18
00:00:56,360 --> 00:00:57,930
‫Dus we moeten hem schade toebrengen.

19
00:00:57,950 --> 00:01:01,340
‫Anders, als ik miste en ik heb de vijand niet geraakt, richt het geen schade aan.

20
00:01:01,370 --> 00:01:02,750
‫Dat is een heel gemakkelijke manier.

21
00:01:02,750 --> 00:01:05,600
‫Het bootst niet echt de fysica van een kogel na, maar dat is ook niet nodig.

22
00:01:05,630 --> 00:01:09,920
‫Dus om prestatieredenen doen we dat nu niet met een raketwerper of iets dergelijks, het is vaak

23
00:01:09,920 --> 00:01:11,000
‫een erg traag projectiel.

24
00:01:11,000 --> 00:01:16,340
‫We willen het effect zien van dat projectiel dat door de lucht beweegt en de vertraging kan belangrijk zijn.

25
00:01:16,730 --> 00:01:21,760
‫In dat geval kunnen we dat projectiel spawnen en kijken of het projectiel in

26
00:01:21,770 --> 00:01:28,950
‫5 seconden tijd raakt, of we kunnen een andere route inslaan met kogels en geweren en sluipschuttersgeweren over lange afstanden.

27
00:01:29,030 --> 00:01:32,960
‫Dus dit kan allemaal veranderen, afhankelijk van de implementatie van ons wapen.

28
00:01:32,960 --> 00:01:36,130
‫Nu gaan we tijdens deze sectie één pistool implementeren.

29
00:01:36,170 --> 00:01:38,840
‫Het wordt een geweer, een soort direct schietend geweer.

30
00:01:38,840 --> 00:01:45,500
‫Maar om die architectuur voor u open te laten om uit te breiden, gaan we het pistool verantwoordelijk maken voor

31
00:01:45,530 --> 00:01:46,490
‫het schieten.

32
00:01:46,520 --> 00:01:52,010
‫Dus dat betekent dat we door moeten gaan en wat schietarchitectuur in ons pistool moeten introduceren.

33
00:01:52,010 --> 00:01:53,010
‫Dus we hebben een geweerschot.

34
00:01:53,030 --> 00:02:00,650
‫H We willen hier een publieke functie voor creëren die ons in staat stelt om in wezen de trekker over te halen op

35
00:02:00,650 --> 00:02:02,690
‫het pistool van de schutter.

36
00:02:02,690 --> 00:02:03,000
‫Juist.

37
00:02:03,020 --> 00:02:05,220
‫Dus van waar we ook zijn bindende input.

38
00:02:05,240 --> 00:02:12,360
‫In het geval van de vijand gaan we bijvoorbeeld de trekker uit de lucht halen.

39
00:02:13,010 --> 00:02:15,550
‫Dus laten we doorgaan en een leegte creëren.

40
00:02:15,560 --> 00:02:20,960
‫Het hoeft geen pull-triggermethode van het retourtype te hebben en er hoeft niets voor nodig te zijn.

41
00:02:20,970 --> 00:02:24,500
‫Alles wat we moeten weten is dat we de trekker willen overhalen in dit frame.

42
00:02:24,800 --> 00:02:27,170
‫Dus dat hebben is voldoende.

43
00:02:27,290 --> 00:02:33,740
‫Nu ga ik door en maak de rotatie met control shift P en creëer implementatie.

44
00:02:34,730 --> 00:02:40,160
‫En dan hierbinnen, alles wat ik ga doen is een YUI-logboek plaatsen en ik

45
00:02:40,160 --> 00:02:48,550
‫ga gewoon een waarschuwing maken om op te vallen en het bericht te veranderen in Je bent zo neergeschoten en dat is geweldig .

46
00:02:48,560 --> 00:02:52,880
‫Dus dat is wat we in ons personage DOT CBP gaan noemen.

47
00:02:54,020 --> 00:02:57,440
‫Dus dit wordt een uitdaging voor je, is wat meer input bindend?

48
00:02:57,440 --> 00:02:58,730
‫We hebben hier veel inputbinding gedaan.

49
00:02:58,730 --> 00:03:01,670
‫Je hebt veel voorbeelden van invoerbinding.

50
00:03:01,910 --> 00:03:02,960
‫Ga je gang en doe dit.

51
00:03:02,960 --> 00:03:08,480
‫Om een schietactie aan te sluiten, moet je een nieuwe actie maken in de projectinstellingen voor

52
00:03:08,510 --> 00:03:09,020
‫fotograferen.

53
00:03:09,380 --> 00:03:16,850
‫Bind dat aan je sleutel, je rechter trigger, waar je het ook aan wilt binden, en bind het dan in de

54
00:03:17,210 --> 00:03:20,120
‫personage-setup player input component-methode om dit te doen.

55
00:03:20,480 --> 00:03:26,240
‫En na het binden van het personage, zou je de pull-trigger moeten kunnen oproepen met

56
00:03:26,240 --> 00:03:30,290
‫in de functie die je op het personage hebt gemaakt.

57
00:03:30,290 --> 00:03:36,320
‫Vergeet niet om een functie in het teken in te voeren om de binding in te stellen, in plaats van te proberen

58
00:03:36,320 --> 00:03:38,300
‫rechtstreeks aan dat wapen te binden.

59
00:03:38,300 --> 00:03:40,250
‫Direct aan het pistool binden gaat niet werken.

60
00:03:40,250 --> 00:03:42,710
‫Je moet er een kleine functie tussenpersoon in zetten.

61
00:03:43,460 --> 00:03:48,860
‫Dus pauzeer de video en ik geef je een kleine hint of een klein begin als je worstelt met

62
00:03:48,860 --> 00:03:52,910
‫dat laatste deel van de uitdaging van het creëren van de intermediaire functie.

63
00:03:53,690 --> 00:03:55,220
‫Oké, hier komt de hint.

64
00:03:55,220 --> 00:03:56,630
‫Als je de hints niet wilt, pauzeer dan nu.

65
00:03:56,930 --> 00:04:03,740
‫Maar de hint zal zijn dat we zoiets als dit gaan doen, namelijk om een nieuwe privéfunctie

66
00:04:03,740 --> 00:04:08,930
‫te hebben genaamd void, shoot en de implementatie in C++ te creëren.

67
00:04:09,200 --> 00:04:14,600
‫En het zal hier zijn dat we de methode van de wapens gebruiken.

68
00:04:14,600 --> 00:04:18,290
‫Dus de geweren halen de trekker over, we gaan het geweer doen.

69
00:04:19,370 --> 00:04:24,890
‫En haal dan de trekker over van binnenuit schieten.

70
00:04:24,890 --> 00:04:26,180
‫En dit is wat je moet binden.

71
00:04:27,290 --> 00:04:34,190
‫Oké, dus de video wordt weer opgehaald, als dat is waar je dingen wilt doen en laten we dan gaan en de

72
00:04:34,190 --> 00:04:34,900
‫acties opzetten.

73
00:04:34,910 --> 00:04:35,240
‫Oké.

74
00:04:35,240 --> 00:04:37,990
‫Dus we gaan naar onze projectinstellingen.

75
00:04:38,000 --> 00:04:44,900
‫Dus instellingen, projectinstellingen en we willen dit docken en naar onze input gaan en we willen een nieuwe actie toevoegen

76
00:04:44,900 --> 00:04:47,240
‫en we gaan het shoot noemen.

77
00:04:48,300 --> 00:05:00,540
‫En dan gaan we dit binden aan de linkermuisknop en de rechter trigger, niet aan de rechter trigger-as.

78
00:05:01,140 --> 00:05:02,010
‫Het recht.

79
00:05:02,970 --> 00:05:03,720
‫Gewoon triggeren.

80
00:05:04,200 --> 00:05:06,090
‫Ik dacht dat ik daarvoor had gekozen, maar dat was niet zo.

81
00:05:06,750 --> 00:05:09,420
‫Dus het bindt aan zowel de controller als de muis.

82
00:05:09,930 --> 00:05:15,150
‫En ik ga erheen en bind de as vast en schiet een personage CP.

83
00:05:15,330 --> 00:05:17,490
‫Dus kopieer deze bind-as voor sprong.

84
00:05:17,880 --> 00:05:18,720
‫Ik bedoel, actie.

85
00:05:18,720 --> 00:05:20,880
‫Natuurlijk haal ik die twee altijd door elkaar.

86
00:05:21,450 --> 00:05:24,810
‫We hebben hier een oproepomschakeling naar de schietas.

87
00:05:24,870 --> 00:05:31,980
‫De geperste is wat we willen en in plaats van te binden om te springen, gaan we in plaats daarvan binden aan een

88
00:05:31,980 --> 00:05:32,520
‫karaktershoot.

89
00:05:33,550 --> 00:05:34,330
‫Zoals zo.

90
00:05:34,570 --> 00:05:36,010
‫En laten we doorgaan en bouwen.

91
00:05:36,790 --> 00:05:37,070
‫Oké.

92
00:05:37,090 --> 00:05:38,740
‫Het lijkt erop dat dat is gelukt.

93
00:05:38,890 --> 00:05:40,660
‫Laten we dat afsluiten.

94
00:05:40,780 --> 00:05:42,460
‫En kijken of het werkt.

95
00:05:42,580 --> 00:05:48,460
‫Dus laten we het spel afsluiten en opnieuw op play drukken en het outputlogboek bekijken.

96
00:05:48,460 --> 00:05:50,320
‫Cruciaal spelen.

97
00:05:50,620 --> 00:05:51,120
‫Ja.

98
00:05:51,220 --> 00:05:54,310
‫Dus als ik op de muisknop druk, werkt het.

99
00:05:54,640 --> 00:05:58,300
‫Eens kijken of hetzelfde gebeurt als ik mijn rechter trigger gebruik.

100
00:05:58,840 --> 00:05:59,130
‫Ja.

101
00:05:59,140 --> 00:05:59,410
‫Rechts.

102
00:05:59,410 --> 00:06:01,510
‫Trigger werkt ook om te vuren.

103
00:06:01,810 --> 00:06:07,480
‫Het is dus duidelijk dat een logbericht niet de beste manier is om je speler te laten weten dat er iets aan de hand is in het

104
00:06:07,480 --> 00:06:07,850
‫spel.

105
00:06:07,870 --> 00:06:11,860
‫Dus in de volgende lezing gaan we kijken naar het toevoegen van deeltjeseffecten om precies dat te doen.

106
00:06:12,250 --> 00:06:12,940
‫Ik zie je daar.

