﻿1
00:00:04,350 --> 00:00:05,340
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,340 --> 00:00:11,490
‫ในการบรรยายนี้ เราจะตั้งค่าการติดตามเรขาคณิตแรกของเรา เพื่อที่ว่าเมื่อเราไปดูการ์กอยล์ของเราและเราเข้าใกล้พอภายในระยะแล้ว

3
00:00:11,490 --> 00:00:21,030
‫มันจะพิมพ์ชื่อนักแสดงที่ถูกโจมตีด้วย ร่องรอย

4
00:00:21,030 --> 00:00:27,540
‫มาดูกันว่าเราจะทำสิ่งนี้ได้อย่างไร ในที่สุดเราก็พร้อมที่จะจัดการกับการกวาดทีละช่อง

5
00:00:27,540 --> 00:00:31,290
‫มีหลายชิ้นที่เราต้องมีเพื่อให้มันใช้งานได้

6
00:00:31,290 --> 00:00:32,550
‫แต่สุดท้าย เราก็มา

7
00:00:32,700 --> 00:00:36,240
‫มาดูไวยากรณ์ของฟังก์ชันนี้กัน

8
00:00:36,240 --> 00:00:43,230
‫ดังนั้นเราจึงอยู่ในที่ที่ดีกว่ามากที่จะเข้าใจว่าเกิดอะไรขึ้นที่นี่เมื่ออยู่ในประเภทเหล่านี้

9
00:00:43,230 --> 00:00:51,510
‫ค่าที่ส่งกลับเป็นค่าบูลีน ซึ่งโดยทั่วไปจะบอกเราว่าเราพบอะไรจากการกวาดหรือไม่

10
00:00:51,990 --> 00:00:56,430
‫อาร์กิวเมนต์ที่สอง อย่างที่คุณเห็นที่นี่ มันคือการอ้างอิง

11
00:00:56,430 --> 00:00:58,050
‫มีเครื่องหมายนี้

12
00:00:58,170 --> 00:01:02,520
‫และไม่สำคัญว่าจะมีการเว้นวรรคหลังเครื่องหมายหรือช่องว่างระหว่างชื่อตัวแปร

13
00:01:02,520 --> 00:01:07,830
‫ตราบใดที่มีเครื่องหมายและหลังประเภทที่บอกว่าประเภทนั้นเป็นข้อมูลอ้างอิงและเป็นประเภทที่เรียกว่าผลการตี

14
00:01:07,950 --> 00:01:12,690
‫F คุณจะเห็นได้ว่ามันเป็นโครงสร้าง

15
00:01:12,810 --> 00:01:15,870
‫ดังนั้นผลการตี F นี้จึงเป็นการตีออก

16
00:01:15,870 --> 00:01:18,630
‫นั่นคือผลที่ออกมาจากการกวาด

17
00:01:18,630 --> 00:01:26,790
‫เราสามารถเห็นได้ว่ามีสิ่งใดถูกโจมตีและมีโครงสร้างเพราะมีหลายสิ่งที่แตกต่างกัน ชิ้นส่วนของข้อมูลที่สามารถออกมาจากการกวาดล้างนี้ได้

18
00:01:26,790 --> 00:01:31,080
‫จากนั้นเรามีการอ้างอิงเวกเตอร์ f คงที่

19
00:01:31,080 --> 00:01:36,510
‫นี่จึงใช้เวกเตอร์เริ่มต้นโดยอ้างอิงแทนที่จะคัดลอก

20
00:01:36,510 --> 00:01:40,530
‫เช่นเดียวกับเวกเตอร์สิ้นสุด, เราก็ได้การหมุน

21
00:01:40,530 --> 00:01:46,710
‫นี่คือการหมุนของรูปร่างโดยใช้ f quat ซึ่งเป็นโครงสร้างทางเลือกแทนการใช้

22
00:01:46,710 --> 00:01:47,610
‫f rotator

23
00:01:47,610 --> 00:01:51,690
‫เราจะมาดูกันว่าโดยพื้นฐานแล้วเราจะหมุนเป็นศูนย์ได้อย่างไร เพราะเราใช้ทรงกลม

24
00:01:51,690 --> 00:01:52,770
‫มันไม่สำคัญจริงๆ

25
00:01:53,220 --> 00:01:59,940
‫สิ่งต่อไปที่เข้ามาคือ Trace Channel และเราจะมาดูกันว่าจะรู้ว่า Trace channel

26
00:01:59,940 --> 00:02:02,220
‫ของเราเรียกว่าอะไรใน C++

27
00:02:02,370 --> 00:02:13,830
‫แล้วเราก็ได้รูปทรงการชนกัน ซึ่งจะเป็นอาร์กิวเมนต์สุดท้ายที่เราต้องจัดเตรียม และเราจะดูว่าเราจะสร้างทรงกลมของรัศมีหนึ่งได้อย่างไรด้วยการทำเช่นนั้น

28
00:02:13,830 --> 00:02:18,540
‫แต่ก่อนที่เราจะเริ่มต้น เราจำเป็นต้องรู้ว่ารัศมีนั้นคืออะไรและมีการกำหนดค่าอย่างไร

29
00:02:18,540 --> 00:02:27,870
‫ดังนั้นเราจะไปที่จุด h คว้า เราจะลบฟังก์ชันเหล่านี้ที่เราใช้เป็นตัวอย่างสำหรับการอ้างอิงและพารามิเตอร์ออก

30
00:02:27,870 --> 00:02:35,040
‫และเรากำลังจะสร้างคุณสมบัติใหม่ ซึ่งจะแก้ไขได้ทุกที่ และมันจะเป็นทุ่นที่เรียกว่ารัศมีการคว้า

31
00:02:35,310 --> 00:02:42,690
‫และเราจะตั้งค่านั้นเป็น 101 เมตร

32
00:02:42,690 --> 00:02:53,490
‫ตอนนี้เรามาดู C++ กันและลบการอ้างอิงถึงความเสียหายของการพิมพ์และมีความเสียหาย และเราสามารถลบสิ่งเหล่านั้นออกจากองค์ประกอบเห็บได้เช่นกัน

33
00:02:53,490 --> 00:03:03,900
‫คำสั่ง if ทั้งหมดและตำแหน่งที่เราส่งความเสียหายเพราะที่นี่เรากำลังวาดบรรทัดการดีบักของเราและตอนนี้เราต้องการโทรไปที่การกวาดทีละช่อง

34
00:03:03,990 --> 00:03:06,150
‫เราจะพิมพ์สปอย

35
00:03:06,150 --> 00:03:13,350
‫เราจะพิมพ์ get world วงเล็บเพราะเรารู้ว่านี่เป็นฟังก์ชันของ new world

36
00:03:13,350 --> 00:03:14,070
‫object

37
00:03:14,370 --> 00:03:19,500
‫จากนั้นเราสามารถทำลูกศรได้เพราะเรารู้ว่า get world คืนค่าพอยน์เตอร์

38
00:03:19,500 --> 00:03:29,040
‫จากนั้นเราจะทำการกวาดทีละแชนเนลเช่นนั้น และเราจะต้องป้อนพารามิเตอร์ out เพื่อให้มันเติมเป็นอาร์กิวเมนต์แรก

39
00:03:29,040 --> 00:03:31,710
‫ที่นี่.

40
00:03:31,800 --> 00:03:38,100
‫ดังนั้น เราจะสร้างตัวแปรที่จะว่าง ซึ่งจะเติมข้อมูล และต้องมีประเภทที่ถูกต้อง

41
00:03:38,100 --> 00:03:44,640
‫มันจะเป็นผลลัพธ์ของ if f hit และเราแค่จะเรียกตัวแปรเองว่า hit result ใส่เครื่องหมายอัฒภาคต่อท้ายเพราะเราไม่ได้เริ่มต้น

42
00:03:44,640 --> 00:03:55,050
‫เราไม่ได้ให้ค่าใดๆ กับมัน แต่เรา' จะส่งต่อไปเพื่อให้ได้รับค่าโดยฟังก์ชันการกวาดเดี่ยวโดยช่อง

43
00:03:55,770 --> 00:03:57,270
‫นั่นคือผลการตีของเรา

44
00:03:57,270 --> 00:04:05,190
‫จากนั้นเราต้องผ่านเวกเตอร์เริ่มต้นและจุดสิ้นสุดซึ่งเรารู้ว่าจะไม่ถูกคัดลอก แต่นำไปอ้างอิง

45
00:04:05,430 --> 00:04:13,080
‫ตอนนี้ เราต้องเติมค่าการหมุนที่เราสามารถทำได้ด้วยเครื่องหมายโคลอน f อย่างง่าย เอกลักษณ์โคลอน

46
00:04:13,080 --> 00:04:17,370
‫ซึ่งบอกเราโดยพื้นฐานว่านี่คือการไม่หมุน

47
00:04:17,370 --> 00:04:19,290
‫นั่นเป็นเพียงภาษาแปลก ๆ เล็กน้อยสำหรับมัน

48
00:04:19,290 --> 00:04:23,190
‫เป็นการพูดทางคณิตศาสตร์สำหรับความหมายว่านี่ไม่ใช่การหมุน

49
00:04:23,760 --> 00:04:27,030
‫ต่อไป เราต้องการช่องสัญญาณการชนกันของร่องรอย

50
00:04:27,030 --> 00:04:31,020
‫ทีนี้ เราจะค้นหาช่องทางการชนกันของร่องรอยนั้นได้อย่างไร

51
00:04:31,170 --> 00:04:38,370
‫ถ้าเราไปที่โฟลเดอร์ที่เก็บโปรเจ็กต์ของเราไว้ และเราเข้าไปที่ config จากนั้นเราไปที่เอ็นจิ้นเริ่มต้นของ

52
00:04:38,370 --> 00:04:44,160
‫INI คลิกขวาแล้วเปิดด้วยโค้ด Visual Studio

53
00:04:44,160 --> 00:04:47,700
‫และที่นี่ฉันต้องการค้นหา Grabber

54
00:04:48,030 --> 00:04:52,770
‫ดังนั้น คุณจะสามารถเห็นช่องทางตอบสนองการชนของตัวจับ

55
00:04:52,770 --> 00:04:56,040
‫และโดยพื้นฐานแล้วมันถูกตั้งค่าไว้ที่นี่ในเครื่องมือเริ่มต้นของ INI

56
00:04:56,040 --> 00:05:00,990
‫มีการกล่าวถึงเพียงครั้งเดียวในไฟล์ทั้งหมด และคุณสามารถดูชื่อช่องได้

57
00:05:00,990 --> 00:05:02,820
‫นี่คือชื่อช่องในภาษา C++

58
00:05:02,820 --> 00:05:03,750
‫มันไม่มากนัก

59
00:05:04,050 --> 00:05:06,060
‫ใช่ แต่มันคือ s อี ค.

60
00:05:06,090 --> 00:05:17,980
‫Game Trace Channel 2 เพื่อให้เราสามารถไปข้างหน้าและคัดลอกสิ่งนั้น จากนั้นเราสามารถกลับไปที่คว้า CP ของเราแล้ววางที่นี่เป็นช่องทางการติดตามที่เราต้องการ

61
00:05:18,000 --> 00:05:22,590
‫ทีนี้ บรรทัดนี้ค่อนข้างยาว และสิ่งที่เราทำได้เพื่อชดเชยก็คือ เราสามารถใส่พารามิเตอร์แต่ละตัวแยกกัน

62
00:05:22,590 --> 00:05:27,030
‫หรืออย่างน้อยก็กระจายออกไป

63
00:05:27,030 --> 00:05:29,220
‫ดังนั้นจุดเริ่มต้นและจุดสิ้นสุดอาจเหมือนกัน

64
00:05:29,220 --> 00:05:35,250
‫เกณฑ์การระบุตัวตนอยู่บนหนึ่งบรรทัด ช่องทางการติดตามอยู่ในอีกบรรทัดหนึ่งเช่นนั้น

65
00:05:35,250 --> 00:05:39,640
‫และนั่นทำให้เรามีพื้นที่เพิ่มขึ้นเล็กน้อยสำหรับการอ่านรายการอาร์กิวเมนต์ยาวๆ เหล่านี้

66
00:05:39,660 --> 00:05:44,130
‫ทีนี้ ถ้าเรากลับไปที่เอกสาร เราจะเห็นว่าสิ่งต่อไปที่เราต้องส่งเข้าไปที่นี่คือรูปร่างการชนกันของ

67
00:05:44,130 --> 00:05:47,250
‫F

68
00:05:47,250 --> 00:05:49,890
‫เราจึงต้องสร้างรูปทรง

69
00:05:49,890 --> 00:05:52,980
‫บางทีเราอาจจะทำสิ่งนี้โดยแยกตัวแปรที่ด้านบนสุด

70
00:05:52,980 --> 00:05:57,510
‫ฉันจะทำก่อนผลการตี F เพื่อให้ชัดเจนว่าผลลัพธ์การตี F เป็นพารามิเตอร์เอาต์จริง

71
00:05:57,510 --> 00:05:58,140
‫ๆ

72
00:05:58,140 --> 00:06:02,490
‫ฉันจะปล่อยให้สิ่งนั้นเป็นสิ่งสุดท้ายก่อนการเรียกใช้ฟังก์ชันเสมอ

73
00:06:02,850 --> 00:06:08,970
‫เราจะสร้างรูปร่างการชนกันของ F ซึ่งเราจะเรียกว่าทรงกลม และเราจะกำหนดให้มันเท่ากับ

74
00:06:08,970 --> 00:06:15,210
‫F รูปร่างการชนกันของ F, ทวิภาค, ทวิภาค, สร้างทรงกลม

75
00:06:15,210 --> 00:06:18,540
‫นั่นจะสร้างทรงกลมใหม่ รูปทรงการชนกันให้เรา

76
00:06:18,540 --> 00:06:26,580
‫และอาร์กิวเมนต์ของฟังก์ชันนี้คือรัศมีทรงกลมที่เราได้รับเป็นตัวแปรรัศมีการคว้าที่เรากำหนดค่าเป็นคุณสมบัติ

77
00:06:26,580 --> 00:06:33,060
‫U แต่มีเครื่องหมายอัฒภาคที่ส่วนท้ายของบรรทัดนี้ และเราสามารถส่งผ่านทรงกลมเป็นอาร์กิวเมนต์สุดท้ายไปยัง

78
00:06:33,060 --> 00:06:41,130
‫ฟังก์ชัน Sweep channel และใส่เครื่องหมายอัฒภาคที่ท้ายบรรทัดนั้น

79
00:06:41,130 --> 00:06:47,790
‫อีกอย่างหนึ่งก็คือ ฟังก์ชันนี้ที่เราทราบจะคืนค่าบูลีน ซึ่งก็คือว่าเราได้โจมตีอะไรหรือเปล่า

80
00:06:47,790 --> 00:06:57,480
‫ผมจะใส่ผลลัพธ์ลงในตัวแปรบูลีนที่เรียกว่า has hit และนั่นคือสิ่งที่เราจะใช้ในฟังก์ชันนี้ในภายหลัง

81
00:06:57,480 --> 00:07:02,280
‫เลยอยากท้าให้พิมพ์ชื่อดาราดัง

82
00:07:02,280 --> 00:07:04,440
‫ตอนนี้เราได้กวาดล้างเกิดขึ้นแล้ว

83
00:07:04,440 --> 00:07:07,230
‫เราควรจะได้รับผลบางอย่างจากมัน

84
00:07:07,230 --> 00:07:11,700
‫ดังนั้นใช้คำสั่ง if เพื่อพิมพ์ว่าเรามีสิ่งใดเลย

85
00:07:11,700 --> 00:07:16,830
‫ถ้าบูลีนนั้นเป็นจริง นั่นคือตอนที่เรากำลังจะพิมพ์ชื่อนักแสดง

86
00:07:16,830 --> 00:07:22,950
‫คุณจะได้นักแสดงที่ Sphere Trace ถูกโจมตีโดยใช้โครงสร้างผลลัพธ์ของ Hit

87
00:07:22,950 --> 00:07:28,530
‫มันมีวิธีการซึ่งคุณสามารถเข้าถึงได้ด้วยตัวดำเนินการจุดเพราะเป็นโครงสร้าง

88
00:07:28,530 --> 00:07:30,300
‫ไม่ใช่ตัวชี้ไปยังโครงสร้าง

89
00:07:30,600 --> 00:07:36,630
‫คุณสามารถทำการจุด รับนักแสดง และใช้วงเล็บ และนั่นจะคืนค่าตัวชี้นักแสดงให้คุณ

90
00:07:37,140 --> 00:07:42,240
‫จากนั้นใช้ตัวชี้แบบแอ็คทีฟ คุณจะได้ชื่อนักแสดงโดยใช้วิธีรับชื่อนักแสดงหรือวิธีการติดป้ายกำกับ

91
00:07:42,240 --> 00:07:49,020
‫และคิดว่าคุณต้องการใช้ตัวดำเนินการจุดหรือลูกศรสำหรับสิ่งนี้ จากนั้นรวบรวมและทดสอบโดยพิมพ์ชื่อนักแสดงนั้นออกมาแล้วดูว่าคุณเป็นอย่างไร

92
00:07:49,020 --> 00:07:53,700
‫สามารถตีในที่เกิดเหตุ

93
00:07:53,700 --> 00:07:55,500
‫หยุดวิดีโอชั่วคราวและไปกันเลย

94
00:07:58,460 --> 00:07:58,750
‫ตกลง.

95
00:07:58,750 --> 00:07:59,710
‫ยินดีต้อนรับกลับ.

96
00:07:59,740 --> 00:08:02,410
‫เราจะเริ่มด้วยการสร้างคำสั่ง if

97
00:08:02,410 --> 00:08:10,270
‫ดังนั้นถ้าถูกโจมตี เราก็จะต้องจัดฟัน และเราจะทำอย่างแรกเลย เราต้องการได้รับคะแนนของนักแสดงคนนั้น

98
00:08:10,270 --> 00:08:17,710
‫ดังนั้น นักแสดง ดารา นักแสดง ดารา นักแสดง เท่ากับ ผลการตี

99
00:08:18,670 --> 00:08:20,260
‫รับจุด

100
00:08:20,560 --> 00:08:21,420
‫นักแสดงชาย.

101
00:08:21,910 --> 00:08:22,690
‫วงเล็บ

102
00:08:22,690 --> 00:08:22,900
‫ชอบ.

103
00:08:22,900 --> 00:08:34,030
‫จากนั้นเราจะทำบันทึก u และเราจะเขียน hit นักแสดงโคลอน เปอร์เซ็นต์ sx และเราสามารถตีนักแสดง และเนื่องจากเป็นตัวชี้ตรงนี้

104
00:08:34,060 --> 00:08:44,860
‫เราสามารถตีนักแสดงลูกศร รับชื่อนักแสดงหรือป้ายกำกับ แล้วบาง วงเล็บ

105
00:08:44,860 --> 00:08:51,790
‫และเนื่องจากนี่คือสตริง เราจึงต้องใส่ดาวไว้ที่ด้านหน้าของ Shebang ทั้งหมด เพื่อให้สามารถแสดงในบันทึก

106
00:08:52,240 --> 00:08:55,210
‫Yui ของเราได้อย่างเหมาะสม

107
00:08:55,240 --> 00:08:58,660
‫เอาล่ะตอนนี้เราต้องดำเนินการต่อไปและรวบรวมสิ่งนี้

108
00:08:58,660 --> 00:09:06,640
‫เมื่อเราอยู่ในฉากแล้ว ให้เปิดล็อกเอาท์พุตและเชื่อมต่อเข้ากับเลย์เอาต์เพื่อให้เรามองเห็นได้ในขณะที่เราเล่นและกดปุ่มเล่น

109
00:09:07,390 --> 00:09:11,050
‫และทันที คุณจะเห็นว่าเรากำลังตีรูปปั้นกอบลิน

110
00:09:11,080 --> 00:09:19,150
‫ถ้าฉันหันกลับไปมองอย่างอื่นที่คุณเห็น ก็ไม่ชัดเจนนักว่าฉันไม่ได้ตีอะไรหรือว่ามันไม่แสดงอะไรเลย

111
00:09:19,150 --> 00:09:24,970
‫สิ่งที่ฉันจะทำคือฉันจะใส่ค่าอื่นใน if คำสั่งของเราที่นี่ ใส่วงเล็บเพิ่มเติมแล้วฉันจะทำ

112
00:09:24,970 --> 00:09:27,640
‫U log อีกอัน

113
00:09:27,640 --> 00:09:34,450
‫และคราวนี้เนื้อความจะบอกว่า ไม่มีนักแสดงคนไหนโดน มาคอมไพล์ใหม่แล้วไปเล่นในเอดิเตอร์กัน

114
00:09:34,450 --> 00:09:35,230
‫และคุณสามารถดูได้ในขณะนี้

115
00:09:35,230 --> 00:09:41,230
‫มันบอกว่าไม่มีนักแสดงคนไหนโดนตลอดเวลาจนกว่าฉันจะไปดูการ์กอยล์

116
00:09:41,230 --> 00:09:43,900
‫และตอนนี้มันบอกว่าการ์กอยล์เป็นสิ่งที่ถูกตี

117
00:09:43,900 --> 00:09:50,740
‫ถ้าฉันถอยออกมาไกลเกินกว่าจะถึงระยะ คุณจะเห็นว่าไม่มีนักแสดงคนใดถูกตีอีกแล้ว

118
00:09:50,770 --> 00:09:51,280
‫สิ่งที่ดี

119
00:09:51,280 --> 00:09:58,090
‫ตอนนี้เราได้ทำการกวาดเรขาคณิตด้วยวัตถุทรงกลมแล้ว และเราจะเห็นว่ามันทำปฏิกิริยาเฉพาะกับนักแสดงในช่อง

120
00:09:58,270 --> 00:10:04,420
‫Trace ของเราเท่านั้น เช่น Gargoyle เป็นสิ่งเดียวที่เราตั้งค่าไว้ในขณะนี้

121
00:10:04,420 --> 00:10:06,880
‫นั่นคือสิ่งเดียวที่มันค้นพบ

122
00:10:06,880 --> 00:10:08,770
‫เจอกันใหม่ตอนหน้าค่ะ

