﻿1
00:00:03,990 --> 00:00:10,110
‫เราจะสร้างฟังก์ชันไฟ และเชื่อมโยงฟังก์ชันนี้กับปุ่มซ้ายของเมาส์

2
00:00:10,110 --> 00:00:18,210
‫และที่นี่ คุณจะเห็นว่าฉันกำลังวาดทรงกลมดีบักที่ปลายกระบอกป้อมปืนของเรา เพียงเพื่อพิสูจน์ว่าการทำแผนที่การดำเนินการนี้ใช้ได้ผล

3
00:00:18,210 --> 00:00:21,360
‫เมื่อใดก็ตามที่ฉันคลิกปุ่มซ้ายของเมาส์ มีบางอย่างเกิดขึ้น

4
00:00:21,720 --> 00:00:23,090
‫เฮ้ ยินดีต้อนรับกลับมา

5
00:00:23,100 --> 00:00:31,020
‫ในวิดีโอนี้ เราจะพูดถึงการสร้างฟังก์ชันไฟหรือฟังก์ชันที่เราสามารถใช้ได้เมื่อเราต้องการวางไข่ของโพรเจกไทล์

6
00:00:31,020 --> 00:00:36,090
‫ดังนั้น เราจะสร้างฟังก์ชันไฟ และเราจะผูกมันเข้ากับการทำแผนที่การดำเนินการ

7
00:00:36,090 --> 00:00:38,370
‫ตอนนี้ เราใช้การแมปแกน

8
00:00:38,370 --> 00:00:40,260
‫การทำแผนที่การดำเนินการจะคล้ายกัน

9
00:00:40,260 --> 00:00:41,550
‫มาพูดถึงมันตอนนี้

10
00:00:41,550 --> 00:00:47,280
‫นี่คือส่วนของภาพหน้าจอของการทำแผนที่การดำเนินการกับไฟที่เรามีในการตั้งค่าโครงการของเรา

11
00:00:47,280 --> 00:00:51,690
‫คุณจะเห็นว่าเรามีปุ่มซ้ายของเมาส์ที่กำหนดให้กับการทำแผนที่การยิง

12
00:00:51,690 --> 00:00:55,290
‫ตอนนี้การทำแผนที่การดำเนินการเป็นเหมือนการทำแผนที่แกนเป็นอย่างมาก

13
00:00:55,290 --> 00:00:57,720
‫คุณสามารถกำหนดคีย์หรือปุ่มได้

14
00:00:57,720 --> 00:01:03,420
‫และเช่นเดียวกับการทำแผนที่แกน จำเป็นต้องมีฟังก์ชันที่สามารถผูกไว้กับการทำแผนที่การดำเนินการได้

15
00:01:03,420 --> 00:01:07,440
‫ตอนนี้ การแมปแกนจะยิงทุกเฟรมของเกม

16
00:01:07,440 --> 00:01:13,590
‫มันเหมือนกับฟังก์ชัน tic และค่าทศนิยมที่ส่งผ่านในการเปลี่ยนแปลงขึ้นอยู่กับว่ามีการกดปุ่มใด

17
00:01:13,590 --> 00:01:15,930
‫การทำแผนที่การดำเนินการจะแตกต่างกันเล็กน้อย

18
00:01:15,960 --> 00:01:22,740
‫ฟังก์ชันเรียกกลับที่ผูกไว้กับการแมปการดำเนินการจะไม่รับพารามิเตอร์อินพุต และสิ่งที่เกิดขึ้นคือเมื่อคุณกดปุ่ม

19
00:01:22,740 --> 00:01:25,200
‫ฟังก์ชันจะถูกเรียก

20
00:01:25,200 --> 00:01:29,430
‫สิ่งที่เกิดขึ้นภายในฟังก์ชั่นนั้นขึ้นอยู่กับเราในฐานะนักพัฒนา

21
00:01:29,430 --> 00:01:31,590
‫ตอนนี้ การทำแผนที่การดำเนินการเป็นหนึ่งเดียว

22
00:01:31,590 --> 00:01:33,030
‫ไม่ได้เกิดขึ้นทุกเฟรม

23
00:01:33,030 --> 00:01:35,790
‫จะเกิดขึ้นเพียงครั้งเดียวเมื่อคุณกดปุ่ม

24
00:01:35,790 --> 00:01:40,950
‫ดังนั้นหากปล่อยปุ่มแล้วกดอีกครั้ง ฟังก์ชันจะถูกเรียกอีกครั้ง

25
00:01:40,980 --> 00:01:47,280
‫ตอนนี้ เมื่อเราผูกฟังก์ชันเข้ากับการแมปแกน เราใช้แกนผูกสำหรับการแมปการดำเนินการ เราใช้ฟังก์ชันที่เรียกว่าการดำเนินการผูก

26
00:01:47,280 --> 00:01:52,650
‫และจะใช้อินพุตที่คล้ายกับแกนผูก

27
00:01:52,650 --> 00:01:56,400
‫ใช้ชื่อของการแม็พการดำเนินการเป็นตัวอักษรสตริง

28
00:01:56,430 --> 00:01:58,710
‫นอกจากนี้ยังต้องมีตัวชี้ไปยังชั้นเรียน

29
00:01:58,710 --> 00:02:04,470
‫เรากำลังผูกมัดฟังก์ชันที่เราสามารถใช้ได้ และแน่นอนว่าต้องมีฟังก์ชันเรียกกลับ

30
00:02:04,470 --> 00:02:17,640
‫ตอนนี้ พารามิเตอร์เพิ่มเติมที่ใช้แกนผูกนั้นไม่ต้องการเป็นค่าคงที่ enum ที่ระบุว่าเราต้องการให้ฟังก์ชันนี้ถูกเรียกใช้เมื่อเรากดปุ่มหรือเมื่อเราปล่อยปุ่ม

31
00:02:17,640 --> 00:02:24,000
‫ดังนั้นมีสองตัวเลือกสำหรับพารามิเตอร์อินพุตนี้คือค่าคงที่ enum, i อี กดและค่าคงที่ enum

32
00:02:24,000 --> 00:02:25,350
‫ผม อี การเผยแพร่.

33
00:02:25,350 --> 00:02:31,110
‫ซึ่งหมายความว่าเราสามารถเรียกการผูกมัดที่ส่งผ่านใน i อี กดถ้าเราต้องการผูกฟังก์ชั่นการโทรกลับเมื่อเรากดปุ่มและแทนถ้าเราใช้

34
00:02:31,110 --> 00:02:40,380
‫i อี ปล่อยแล้วฟังก์ชันเรียกกลับของเราจะถูกเรียกเมื่อปล่อยปุ่มสำหรับฟังก์ชันไฟของเรา

35
00:02:40,380 --> 00:02:42,900
‫เรากังวลว่าเมื่อเรากดปุ่ม

36
00:02:42,900 --> 00:02:46,890
‫เรามาสร้างฟังก์ชันไฟและผูกมันเข้ากับการทำแผนที่การกระทำการยิงกัน

37
00:02:46,890 --> 00:02:57,270
‫ตอนนี้ฉันอยู่ที่ฐานวางไข่ และเหตุผลที่ฉันมาที่นี่ในบ่อฐานก็เพราะว่าฟังก์ชันไฟนี้เป็นสิ่งที่เราสามารถใช้ได้ในคลาสรถถังและในคลาสหอคอย

38
00:02:57,270 --> 00:03:03,030
‫ดังนั้นถ้าเราวางไว้ที่นี่ในบ่อฐาน ทั้ง Tank และ Tower จะสืบทอดฟังก์ชันนี้

39
00:03:03,030 --> 00:03:10,230
‫และเนื่องจากทั้งรถถังและหอคอยกำลังยิงขีปนาวุธ พวกเขาจึงสามารถสืบทอดฟังก์ชันและใช้งานได้

40
00:03:10,260 --> 00:03:16,530
‫ตอนนี้ เนื่องจากฉันต้องการเข้าถึงฟังก์ชันในคลาสย่อยทั้งสอง ฉันสามารถวางฟังก์ชันนี้ไว้ในส่วนที่มีการป้องกัน

41
00:03:16,530 --> 00:03:19,500
‫เหมือนกับการหมุนป้อมปืน

42
00:03:19,500 --> 00:03:26,220
‫ภายใต้การหมุนของป้อมปืน ฉันจะสร้างฟังก์ชัน void ที่เรียกว่า fire ที่ไม่ต้องใช้อินพุต

43
00:03:26,220 --> 00:03:30,780
‫และเราสามารถกำหนดฟังก์ชันไฟตาม CPP ได้

44
00:03:30,780 --> 00:03:41,430
‫ดังนั้นนี่คือพื้นฐานของ CPP และอยู่ใต้ป้อมปืนหมุน ฉันจะวางฟังก์ชันไฟและเราจำเป็นต้องมีคุณสมบัติตามชื่อฟังก์ชันนี้อย่างเต็มที่และกำหนดฟังก์ชันให้กับมัน

45
00:03:41,430 --> 00:03:43,680
‫ตอนนี้เรามีฟังก์ชั่นไฟ

46
00:03:43,680 --> 00:03:47,040
‫ขั้นตอนต่อไปคือการผูกสิ่งนี้กับการทำแผนที่การดำเนินการ

47
00:03:47,040 --> 00:03:54,720
‫ตอนนี้เราเพียงต้องการผูกฟังก์ชันนี้ในคลาสรถถังเพราะว่าแท็งก์เป็นคลาสเดียวที่จะรับอินพุตจากผู้ใช้

48
00:03:54,720 --> 00:03:59,610
‫เราจะเรียกใช้ฟังก์ชันไฟในคลาสทาวเวอร์ในภายหลัง แต่นั่นจะเป็นผลมาจากโค้ดที่เราสร้างขึ้น

49
00:03:59,610 --> 00:04:02,820
‫ไม่ใช่เป็นผลมาจากการป้อนข้อมูลของผู้ใช้

50
00:04:02,820 --> 00:04:10,290
‫ดังนั้นเราจึงอยู่ใน Tank CP และเราจะผูกสิ่งนี้และตั้งค่าองค์ประกอบอินพุตของผู้เล่นเหมือนกับที่เราใช้แกนผูก

51
00:04:10,290 --> 00:04:12,900
‫เราจะใช้องค์ประกอบอินพุตของผู้เล่น

52
00:04:12,900 --> 00:04:18,720
‫ดังนั้นองค์ประกอบอินพุตของผู้เล่นและฟังก์ชันจะเป็นการรวมการกระทำ

53
00:04:18,720 --> 00:04:24,780
‫ตอนนี้อินพุตแรกจะเป็นสตริงลิเทอรัล ซึ่งเราจะห่อในแมโครข้อความตามปกติ

54
00:04:24,780 --> 00:04:27,810
‫และการทำแผนที่การกระทำนี้เรียกว่าไฟ

55
00:04:27,960 --> 00:04:34,080
‫ตอนนี้พารามิเตอร์ถัดไปจะเป็นค่าคงที่ enum ที่กำหนดว่าเราต้องการให้ฟังก์ชันนี้ถูกเรียกเมื่อเรากดปุ่มหรือไม่

56
00:04:34,080 --> 00:04:39,000
‫เทียบกับเมื่อเราปล่อยปุ่ม

57
00:04:39,000 --> 00:04:42,150
‫และเราจะใช้ ฉันขีดเส้นใต้กด

58
00:04:43,170 --> 00:04:46,260
‫เนื่องจากเราต้องการเรียกฟังก์ชันของเราเมื่อเรากดปุ่ม

59
00:04:46,260 --> 00:04:49,520
‫ต่อไปคืออ็อบเจ็กต์คลาสผู้ใช้ที่จะเป็นสิ่งนี้

60
00:04:49,530 --> 00:04:55,620
‫และในที่สุด เราก็มีฟังก์ชันเรียกกลับของเรา ดังนั้นเราจึงสามารถพูดได้ว่ารถถังถูกยิง

61
00:04:55,770 --> 00:05:00,690
‫และตอนนี้ฟังก์ชันการยิงของเราเชื่อมโยงกับการทำแผนที่การกระทำการยิง

62
00:05:00,690 --> 00:05:09,900
‫ดังนั้นเราจึงรู้ว่าฟังก์ชั่นการยิงของเราเชื่อมโยงกับการทำแผนที่การกระทำของไฟ แต่เราต้องการการยืนยันด้วยภาพและนั่นคือสิ่งที่ท้าทายของคุณ

63
00:05:09,900 --> 00:05:14,130
‫ในฟังก์ชันไฟ ฉันอยากให้คุณวาดทรงกลมดีบัก

64
00:05:14,130 --> 00:05:20,640
‫เราได้เห็นวิธีการทำเช่นนี้แล้ว ดังนั้นให้กรอกพารามิเตอร์ด้วยค่าที่คุณคิดว่าเหมาะสม

65
00:05:20,670 --> 00:05:24,030
‫ใช้ตำแหน่งของจุดวางไข่ของโพรเจกไทล์

66
00:05:24,270 --> 00:05:32,100
‫ตอนนี้จุดวางไข่ของโพรเจกไทล์เป็นส่วนประกอบฉากการใช้งาน และคุณเห็นว่าส่วนประกอบมีฟังก์ชันที่เรียกว่ารับตำแหน่งส่วนประกอบ

67
00:05:32,100 --> 00:05:33,780
‫ส่งคืนเวกเตอร์ F

68
00:05:33,810 --> 00:05:38,220
‫นี่คือสิ่งที่คุณสามารถใช้เพื่อรับตำแหน่งจุดวางไข่ของโพรเจกไทล์

69
00:05:38,220 --> 00:05:47,760
‫ตอนนี้เมื่อคุณเรียก Draw debug sphere ให้ใช้ระยะเวลาประมาณ 3 วินาที เพื่อให้เรามองเห็นทรงกลมนั้นครู่หนึ่งก่อนที่มันจะหายไป

70
00:05:47,760 --> 00:05:50,460
‫หยุดวิดีโอชั่วคราวและทำตอนนี้

71
00:05:53,360 --> 00:05:53,550
‫ตกลง.

72
00:05:53,660 --> 00:05:56,810
‫เลยกลับมาที่ Bass Pond และ Bass Pond

73
00:05:57,110 --> 00:06:00,770
‫CP ฉันจะรวมตัวช่วยดีบักวาด

74
00:06:00,770 --> 00:06:03,500
‫ดังนั้นเราจึงมีสิทธิ์เข้าถึงการวาดทรงกลมดีบัก

75
00:06:03,500 --> 00:06:07,010
‫ดังนั้นฉันจะบอกว่ารวมตัวช่วยดีบักวาด

76
00:06:08,240 --> 00:06:12,320
‫และตอนนี้ในฟังก์ชันไฟ เราสามารถวาดทรงกลมดีบักได้

77
00:06:12,350 --> 00:06:18,050
‫ตอนนี้ สิ่งแรกที่ฉันต้องการทำคือหาตำแหน่งของจุดวางไข่ของโพรเจกไทล์

78
00:06:18,080 --> 00:06:29,870
‫ตอนนี้ฉันสามารถสร้างเวกเตอร์ f ในพื้นที่สำหรับสิ่งนี้และฉันสามารถเรียกตำแหน่งจุดวางไข่ของโพรเจกไทล์นี้และฉันสามารถเริ่มต้นได้โดยใช้จุดวางไข่ของโพรเจกไทล์

79
00:06:32,030 --> 00:06:35,780
‫และเรียกรับตำแหน่งส่วนประกอบ

80
00:06:35,780 --> 00:06:43,100
‫ตอนนี้ฉันมีตำแหน่งของจุดวางไข่ของโพรเจกไทล์แล้ว และนี่คือสิ่งที่ฉันสามารถใช้เมื่อเรียก Draw debug

81
00:06:43,100 --> 00:06:43,850
‫sphere ได้

82
00:06:43,850 --> 00:06:46,130
‫ผมจะเรียก draw debug sphere

83
00:06:47,450 --> 00:06:53,720
‫และสำหรับการป้อนข้อมูลครั้งแรก เราต้องการโลก และเรารู้ว่าเราสามารถรับโลกได้โดยใช้ get world next

84
00:06:53,720 --> 00:06:59,810
‫เราต้องการจุดศูนย์กลางของทรงกลมที่จะเป็นจุดวางไข่ของโพรเจกไทล์

85
00:06:59,810 --> 00:07:04,190
‫นั่นคือสิ่งที่ฉันส่งผ่านเป็นพารามิเตอร์ที่สอง

86
00:07:04,190 --> 00:07:06,190
‫และต่อไปเราต้องการรัศมีของทรงกลม

87
00:07:06,200 --> 00:07:08,330
‫ตอนนี้ฉันจะมีทรงกลมขนาดเล็ก

88
00:07:08,480 --> 00:07:15,920
‫ผมจะให้รัศมี 25 F สำหรับจำนวนเซ็กเมนต์ที่ผมจะใช้ 12 และสำหรับสี ผมสามารถใช้สี

89
00:07:15,920 --> 00:07:17,690
‫F ได้

90
00:07:18,680 --> 00:07:21,380
‫อ่านเลย วาดเส้นต่อเนื่องสี่เส้น

91
00:07:21,380 --> 00:07:28,910
‫เราจะให้สายของเราแขวนอยู่ 3 วินาทีเพื่อให้เราสามารถทำให้สิ่งนี้เป็นเท็จได้เพราะเราไม่ต้องการให้สิ่งเหล่านี้คงอยู่ตลอดไป

92
00:07:28,940 --> 00:07:36,380
‫เราจะให้ Debug Sphere นี้มีอายุสาม F ดังนั้น เรามาคอมไพล์กันตอนนี้ และฉันจะกดปุ่มเล่นและคลิก

93
00:07:36,380 --> 00:07:43,310
‫และตอนนี้ เราจะเห็น Debug Sphere ของเรา และแน่นอนว่าจะหายไปภายใน 3 วินาที

94
00:07:43,640 --> 00:07:53,450
‫นี่เป็นการยืนยันที่ดีว่าการทำแผนที่การดำเนินการของเราทำงาน และยังทำให้เราตรวจสอบตำแหน่งของจุดวางไข่ของโพรเจกไทล์ได้อีกด้วย

95
00:07:53,450 --> 00:08:02,420
‫เมื่อเราเริ่มวางไข่แล้ว เรารู้ว่าพวกมันจะวางไข่ที่ตำแหน่งที่ถูกต้องตามที่ระบุโดยทรงกลมดีบัก

96
00:08:02,420 --> 00:08:03,500
‫เท่านี้ก็เยี่ยมแล้ว

97
00:08:03,650 --> 00:08:09,470
‫ในวิดีโอนี้ เราได้สร้างฟังก์ชันไฟ และเชื่อมโยงมันเข้ากับการทำแผนที่การกระทำการยิง

98
00:08:09,740 --> 00:08:15,800
‫และเพื่อพิสูจน์ว่ามันใช้งานได้ เราวาดทรงกลมดีบักที่จุดวางไข่ของโพรเจกไทล์ทุกครั้งที่เราคลิกปุ่มซ้ายของเมาส์

99
00:08:15,830 --> 00:08:21,710
‫ดังนั้นเราจึงมีฟังก์ชั่นการยิง เราเกือบจะพร้อมที่จะเริ่มวางไข่โพรเจกไทล์แล้ว

100
00:08:21,710 --> 00:08:25,250
‫และเรายังได้วางฟังก์ชันนี้ไว้ในคลาสเบสปองอีกด้วย

101
00:08:25,250 --> 00:08:27,980
‫เพื่อให้หอคอยของเราสามารถใช้งานได้

102
00:08:27,980 --> 00:08:32,990
‫ในวิดีโอหน้า เราจะพูดถึงว่าหอคอยของเราจะใช้ฟังก์ชันนี้อย่างไร

103
00:08:33,530 --> 00:08:34,460
‫เจอกันเร็วๆนี้ครับ

