﻿1
00:00:04,360 --> 00:00:05,260
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,260 --> 00:00:08,800
‫ในการบรรยายนี้ เราจะเห็นสิ่งต่าง ๆ จากมุมมองของผู้เล่น

3
00:00:08,830 --> 00:00:15,280
‫เราจะยึดวิวพอร์ตของผู้เล่น ตำแหน่งและการหมุนของกล้องเป็นหลัก เพื่อที่ว่าเมื่อเรากดปุ่มทริกเกอร์

4
00:00:15,280 --> 00:00:21,010
‫เราสามารถวาดกล้องดีบั๊กได้

5
00:00:21,040 --> 00:00:26,890
‫พวกตัวแดงๆ พวกนี้ กล้องกล่องแดงตัวเล็กๆ ที่แสดงให้เราเห็นว่าวิวพอร์ตนั้นอยู่ที่ไหน

6
00:00:26,890 --> 00:00:28,060
‫และเราสามารถยืนยันได้ว่า

7
00:00:28,060 --> 00:00:32,050
‫จากนั้นเราก็สามารถใช้สิ่งนั้นในภายหลังสำหรับ raytracing สำหรับปืน

8
00:00:32,050 --> 00:00:34,990
‫มาดำดิ่งและดูการกระทำทั้งหมดกัน

9
00:00:36,200 --> 00:00:38,360
‫ขอเริ่มการบรรยายนี้ด้วยคำถาม

10
00:00:38,360 --> 00:00:45,860
‫ดังนั้น หากคุณกำลังเล็งผ่านวิวพอร์ตของคุณในลักษณะนี้ และคุณกำลังพยายามจัดแนวตรงกลางหน้าจอของคุณกับศูนย์บัญชาการ

11
00:00:45,860 --> 00:00:51,020
‫D บน D หรือศูนย์บัญชาการศูนย์ ไม่ว่ามันจะเป็นอะไรก็ตาม

12
00:00:51,260 --> 00:00:54,860
‫และฉันตั้งเป้าหมายว่าฉันจะมุ่งไปที่อะไร

13
00:00:54,950 --> 00:00:56,420
‫ฉันคาดหวังว่าจะโดนอะไร?

14
00:00:56,450 --> 00:00:59,360
‫คุณอาจบอกว่า อืม ฉันคาดหวังว่ามันจะถึงศูนย์นั้น

15
00:00:59,360 --> 00:01:01,260
‫แซม นั่นดูเหมือนจะเป็นคำตอบที่ชัดเจน

16
00:01:01,280 --> 00:01:06,980
‫นั่นไม่จำเป็นว่าคุณจะต้องตีอะไร ขึ้นอยู่กับว่าคุณทำสิ่งต่าง ๆ อย่างไร คุณทำการหล่อใหม่อย่างไร

17
00:01:06,980 --> 00:01:10,160
‫มาดูกลยุทธ์ที่เรามีในการหล่อใหม่กัน

18
00:01:10,190 --> 00:01:15,920
‫สิ่งที่ชัดเจนที่สุดคือคุณพูดว่า เรากำลังยิงปืนออกไป ดังนั้นเราจะทำการหล่อกระบอกปืนใหม่

19
00:01:15,920 --> 00:01:20,450
‫หรืออีกอย่าง การตั้งค่านี้ ซึ่งค่อนข้างหยาบมาก โดยพื้นฐานแล้ว เป็นการจัดตั้งบุคคลที่สามของเรา

20
00:01:20,450 --> 00:01:21,860
‫เรามีกล้องกลับมาที่นี่

21
00:01:21,860 --> 00:01:23,870
‫เรามีตัวละคร เรามีปืน

22
00:01:23,870 --> 00:01:26,690
‫และเขากำลังพยายามยิงใส่ตัวละครเป้าหมายอื่นที่นี่

23
00:01:26,900 --> 00:01:31,240
‫อย่างแรกเลย เราเอาปืนออกมาทำใหม่อย่างบริสุทธิ์ใจ

24
00:01:31,280 --> 00:01:38,120
‫อาจพลาดเพราะกล้องของเราไม่ได้ชี้ไปที่ที่ปืนกำลังชี้ ไม่จำเป็น

25
00:01:38,120 --> 00:01:41,630
‫แม้ว่าพวกมันอาจจะชี้ไปในทิศทางเดียวกัน แต่ก็เบี่ยงเบนจากกันเล็กน้อย

26
00:01:41,630 --> 00:01:43,970
‫ดังนั้นพวกเขาจึงไม่จำเป็นต้องตีสิ่งเดียวกัน

27
00:01:43,970 --> 00:01:48,440
‫แต่คุณอาจเลือกว่าต้องการแคสต์ใหม่จากกล้องแทน

28
00:01:48,470 --> 00:01:57,440
‫นั่นหมายความว่าสิ่งที่กล้องกำลังมองอยู่จะเป็นสิ่งที่ถูกโจมตีและโดยทั่วไปแล้วจะรู้สึกเป็นธรรมชาติมากขึ้นในเกมบุคคลที่สาม

29
00:01:57,710 --> 00:02:02,960
‫เมื่อคุณอยู่ในเกมมุมมองบุคคลที่หนึ่ง สิ่งต่างๆ จะเข้ามาใกล้ขึ้นเล็กน้อย เพราะบ่อยครั้งที่คุณอยู่ใกล้ถังเบียร์มาก

30
00:02:02,960 --> 00:02:07,100
‫แต่แม้ในเกมมุมมองบุคคลที่หนึ่ง กฎนี้มักจะเป็นเช่นนั้น

31
00:02:07,100 --> 00:02:10,970
‫คุณคงไม่อยากเคลื่อนที่ไปรอบๆ บริเวณที่จุดเล็งอยู่บนหน้าจอ

32
00:02:10,970 --> 00:02:18,680
‫โดยทั่วไปแล้ว คุณจะมี UI เล็กๆ น้อยๆ ที่วางซ้อนไว้ตรงกลางหน้าจอ และนั่นคือที่ที่คุณจะเล็งลง

33
00:02:18,680 --> 00:02:25,010
‫นั่นคือเหตุผลที่เรามักจะทำการฉายรังสีด้วยอาวุธที่หล่อด้วยรังสีตามวิวพอร์ตนี้

34
00:02:25,340 --> 00:02:34,520
‫โชคดีที่มีวิธีให้เราได้วิวพอร์ตนี้ และเราทำจากคอนโทรลเลอร์ เราจะได้วิวพอร์ตของคอนโทรลเลอร์

35
00:02:34,520 --> 00:02:44,300
‫นั่นทำให้เราต้องไปที่ตัวละคร หาคอนโทรลเลอร์ของตัวละคร จากนั้นค้นหาตำแหน่งวิวพอร์ตและการหมุนของมัน

36
00:02:44,300 --> 00:02:53,060
‫และสิ่งที่เราจะทำในการบรรยายนี้คือลองนึกภาพและยืนยันว่าตำแหน่งและการหมุนของวิวพอร์ตนั้นเป็นสิ่งที่เราคาดหวัง

37
00:02:53,210 --> 00:02:57,350
‫และเราจะทำอย่างนั้นโดยวาดตัวช่วยดีบั๊ก

38
00:02:57,500 --> 00:03:05,390
‫ตอนนี้ตัวช่วยการดีบักอยู่ในไฟล์ส่วนหัวและชื่อไฟล์ส่วนหัวเป็นการดีบัก

39
00:03:06,310 --> 00:03:06,820
‫ผู้ช่วย

40
00:03:06,820 --> 00:03:10,600
‫ตลกดีที่ฉันเชื่อหรือวาดวาดผู้ช่วยดีบัก

41
00:03:10,600 --> 00:03:11,170
‫ที่หนึ่ง

42
00:03:11,530 --> 00:03:16,600
‫และถ้าเราไปดู F 12 นี้เพื่อนำทางไปยังไฟล์ส่วนหัว ถ้าคุณมีมันอยู่แล้วในไฟล์รวมของคุณ

43
00:03:16,600 --> 00:03:22,120
‫เราจะมองหากล้องที่เรียกว่า Camera Draw debug camera

44
00:03:22,120 --> 00:03:29,440
‫และนี่ดึงบางอย่างที่ดูเหมือนไดอะแกรมของฉันตรงนี้ เป็นรูปสามเหลี่ยมหรือรูจมูกนิดหน่อยที่เราสามารถใช้ได้

45
00:03:29,440 --> 00:03:31,270
‫แล้วจะเอาอะไรเข้าไป?

46
00:03:31,270 --> 00:03:37,870
‫มันจะนำตำแหน่งของกล้องตัวนั้นไปในโลก การหมุนของกล้องดังกล่าว

47
00:03:37,900 --> 00:03:41,320
‫ดังนั้นสถานที่ การหมุน มุมมอง

48
00:03:41,320 --> 00:03:44,440
‫เราจะตั้งค่านั้นอาจเป็นค่าเริ่มต้นเช่น 90 องศา

49
00:03:44,440 --> 00:03:46,960
‫มีมาตราส่วน มีค่าเริ่มต้นของสี

50
00:03:46,960 --> 00:03:48,130
‫สิ่งเหล่านี้ผิดนัดทั้งหมด

51
00:03:48,130 --> 00:03:49,720
‫ดังนั้นเราจึงสามารถใช้ค่าเริ่มต้นนั้นได้

52
00:03:50,020 --> 00:03:59,410
‫เรามาลองวาดกล้องดีบั๊กที่นี่ในปืนของฉัน และเราจะใส่มันในวิธีทริกเกอร์แบบดึง เพราะนั่นเป็นเหตุผลที่เรากำลังทำงานของเรา

53
00:03:59,410 --> 00:04:01,870
‫มันต้องการอย่างแรกเลยมันคืออะไร?

54
00:04:01,870 --> 00:04:03,970
‫มันเป็นโลกใหม่

55
00:04:03,970 --> 00:04:06,460
‫ดังนั้นเราจึงได้โลกของเรา

56
00:04:07,300 --> 00:04:11,410
‫แต่เราต้องวาดสิ่งต่อไปที่จะเป็นที่ตั้ง

57
00:04:11,410 --> 00:04:21,250
‫ขอแค่ตำแหน่งนักแสดงในขณะนี้และทำการหมุนเวียนนักแสดงด้วย

58
00:04:22,030 --> 00:04:25,650
‫แล้วสิ่งสุดท้ายที่เราต้องการคือขอบเขตการมองเห็น

59
00:04:25,660 --> 00:04:35,860
‫ลองไปที่มุมมอง 90 องศา ซึ่งเป็นเพียงสิ่งสุ่มที่นั่น และเราสามารถดำเนินการต่อและรวบรวม และดูว่าสิ่งนี้ปรากฏขึ้นหรือไม่

60
00:04:36,280 --> 00:04:40,480
‫แล้วมาตีกันเล่นๆตีกัน

61
00:04:41,170 --> 00:04:42,100
‫ปุ่มทริกเกอร์

62
00:04:42,100 --> 00:04:43,480
‫ฉันไม่เห็นอะไรนี่

63
00:04:43,480 --> 00:04:47,110
‫ลองทำ F 8 และดูว่าเราจะเข้าใกล้ได้ไหม

64
00:04:48,550 --> 00:04:51,790
‫ยังไม่แสดงกล้องชนิดใดในนี้

65
00:04:51,790 --> 00:04:53,740
‫ฉันสงสัยว่ามันเล็กมากจริงหรือ

66
00:04:54,490 --> 00:05:00,730
‫อีกตัวเลือกหนึ่งที่นี่คือ เราอาจต้องการมีเส้นต่อเนื่อง

67
00:05:01,120 --> 00:05:07,660
‫นั่นหมายความว่าเราจำเป็นต้องระบุทุกอย่างใน C++ เพื่อให้เราสามารถตั้งค่ามาตราส่วนของเราเป็นหนึ่งได้

68
00:05:07,660 --> 00:05:13,180
‫เราอาจเพิ่มเป็นสองส่วนก็ได้ เผื่อว่าขนาดที่เป็นปัญหา

69
00:05:13,240 --> 00:05:16,960
‫เราสามารถเลือกสีที่มองเห็นได้ชัดเจนขึ้น อาจจะเป็นสีแดง

70
00:05:16,960 --> 00:05:19,000
‫ดังนั้นสี F, ทวิภาค, ทวิภาค, แดง

71
00:05:19,420 --> 00:05:27,760
‫จากนั้นเราก็สามารถลองให้เส้นที่คงเส้นคงวาเป็นจริงและลองใช้เส้นนั้นเพื่อวัดขนาด

72
00:05:28,410 --> 00:05:29,910
‫เลยเรียบเรียงใหม่

73
00:05:30,890 --> 00:05:32,810
‫และกระโดดลงเล่น

74
00:05:33,260 --> 00:05:34,960
‫และเราไปที่นั่น

75
00:05:34,970 --> 00:05:35,990
‫เราตี.

76
00:05:37,450 --> 00:05:38,260
‫ทริกเกอร์

77
00:05:38,260 --> 00:05:50,350
‫และคุณจะเห็นว่ามันแสดงกล่องกล้องเล็กๆ ที่เรากดไก และการหมุนและตำแหน่งถูกกำหนดโดยปืนและตำแหน่งและการหมุน

78
00:05:50,350 --> 00:05:53,020
‫ตอนนี้เราเลยอยากลองรับวิวพอร์ตแทน

79
00:05:53,020 --> 00:05:57,220
‫อย่างที่บอกไปแล้วนี่จะอยู่บนคอนโทรลเลอร์ของเรา

80
00:05:57,250 --> 00:06:06,640
‫ลองดูที่ Controller H และอีกครั้ง เราต้องการหนึ่งในเฟรมเวิร์กของเกม และเราจะมองหาวิวพอร์ตที่นี่

81
00:06:06,770 --> 00:06:07,390
‫ฉันขอโทษ?

82
00:06:07,390 --> 00:06:11,050
‫ที่จริงแล้ว มุมมองคือคำที่เรากำลังมองหาอยู่ และมีอยู่สองสามคำที่นี่

83
00:06:11,050 --> 00:06:15,670
‫ให้นักแสดงมีมุมมองที่จะมองผ่านสายตาของนักแสดง

84
00:06:15,670 --> 00:06:24,490
‫แต่จริงๆ แล้วเราต้องการเล่นมุมมอง ซึ่งสำหรับผู้ควบคุมดวงตาจะใช้ดวงตา แต่สำหรับผู้เล่นจะใช้กล้องของผู้เล่น

85
00:06:24,490 --> 00:06:25,570
‫นั่นคือสิ่งที่เราต้องการ

86
00:06:25,570 --> 00:06:27,700
‫เราต้องการรับมุมมองผู้เล่น

87
00:06:27,910 --> 00:06:32,080
‫แต่ก่อนอื่น เราต้องจับคอนโทรลเลอร์นั้นให้ได้ก่อน

88
00:06:32,080 --> 00:06:39,160
‫และวิธีที่จะทำคือ อย่างแรกเลย เราต้องทำให้เจ้าของของเราจำไว้ว่าเมื่อเราเปิดตัวละครยิง

89
00:06:39,250 --> 00:06:48,190
‫CP และเราลงไปหรือขึ้นไปเล่น Begin ของเรา คุณจะเห็นว่าเรากำลังตั้งค่าปืน เจ้าของที่จะเป็นตัวละคร

90
00:06:48,400 --> 00:06:51,700
‫นั่นหมายความว่าในปืนเราสามารถไปทางอื่นได้

91
00:06:51,700 --> 00:06:56,890
‫เราสามารถพูดได้ว่า ได้เจ้าของ และนั่นจะทำให้เรากลายเป็นตัวละครของมือปืน

92
00:06:56,890 --> 00:06:59,380
‫ตอนนี้คงไม่รู้ว่าเป็นตัวละครชู้ตติ้ง

93
00:06:59,380 --> 00:07:00,880
‫รู้แค่ว่าเป็นนักแสดง

94
00:07:00,880 --> 00:07:02,560
‫ดังนั้นเราจะต้องทำแคสต์ที่นี่

95
00:07:02,890 --> 00:07:07,810
‫ดังนั้นเราจะคัดเลือกตัวละคร A Shooter

96
00:07:08,540 --> 00:07:12,890
‫และที่จริงแล้ว เราไม่จำเป็นต้องรู้อะไรมากเท่ากับความจริงที่ว่ามันเป็นตัวละครในแนวยิง

97
00:07:12,890 --> 00:07:19,760
‫ก็เพียงพอแล้วที่จะรู้ว่ามันคือเบี้ย และเบี้ยใดๆ ก็สามารถครอบครองปืนนี้ได้ แม้ว่าจะไม่ใช่ตัวละครของนักกีฬาก็ตาม

98
00:07:19,760 --> 00:07:22,210
‫ดังนั้นพยายามและไม่เจาะจงให้มากที่สุด

99
00:07:22,220 --> 00:07:24,200
‫ทำไมมันถึงต้องจำนำด้วยล่ะ?

100
00:07:24,200 --> 00:07:29,570
‫มันจะต้องจำนำเพราะเราต้องได้ผู้ควบคุมและจำนำเท่านั้นที่จะครอบครองโดยผู้ควบคุม

101
00:07:29,570 --> 00:07:30,980
‫ลองใส่สิ่งนี้ลงในตัวแปร

102
00:07:30,980 --> 00:07:39,200
‫มันจะเป็น -- ดาวแล้วเจ้าของ -- จะเป็นชื่อของตัวแปร

103
00:07:39,710 --> 00:07:42,350
‫จากนั้นเราต้องตรวจสอบว่านี่ไม่ใช่โมฆะ

104
00:07:48,750 --> 00:07:53,490
‫และผมจะทำสิ่งนี้ด้วยเส้นซับเดียวที่บอกว่าถ้ามันเป็นโมฆะ เรากลับก่อนกำหนดจากทริกเกอร์พูลของเรา

105
00:07:53,490 --> 00:07:59,280
‫เพื่อที่เราจะได้ไม่ต้องเสี่ยงกับการพยายามเรียกอะไรก็ตามด้วยตัวชี้ค่าว่าง

106
00:07:59,430 --> 00:08:08,790
‫จากนั้นเราก็สามารถเป็นเจ้าของโรงรับจำนำ รับตัวควบคุม และเราต้องการบันทึกไว้ในตัวควบคุม A

107
00:08:09,030 --> 00:08:11,640
‫สตาร์ และคนนี้สามารถเป็นเจ้าของได้

108
00:08:12,090 --> 00:08:12,960
‫คอนโทรลเลอร์

109
00:08:14,210 --> 00:08:15,140
‫เช่นนั้น

110
00:08:15,470 --> 00:08:19,700
‫และอีกครั้ง เราต้องการตรวจสอบว่านี่ไม่ใช่ค่าว่างเพราะเราจะเรียกใช้เมธอดในนั้น

111
00:08:19,700 --> 00:08:23,930
‫และเราไม่สามารถเรียกเมธอดบนพอยน์เตอร์ null ได้

112
00:08:23,960 --> 00:08:26,930
‫มันทำให้ไม่จริง ไม่มีความสุข และผิดพลาด

113
00:08:26,930 --> 00:08:31,460
‫นี่คือจุดที่เราสามารถควบคุมเจ้าของของเราได้แล้ว

114
00:08:33,340 --> 00:08:37,300
‫และเราน่าจะเรียกกันว่าจุดเล่นจุดนั้นได้

115
00:08:38,420 --> 00:08:42,020
‫ความท้าทายสำหรับคุณในการกำหนดตำแหน่งและการหมุนนั้นมาถึงแล้ว

116
00:08:42,020 --> 00:08:45,440
‫การใช้ฟังก์ชันใหม่นั้น คุณสามารถดูลายเซ็นได้

117
00:08:45,440 --> 00:08:52,040
‫อีกครั้งเราไปที่ Controller H ก่อนไฟล์และดูที่เล่นมุมมอง

118
00:08:52,040 --> 00:09:01,460
‫ลองดูว่าจากลายเซ็นนี้ คุณสามารถหาวิธีใช้เพื่อรับตำแหน่งและการหมุนที่เราต้องการส่งต่อไปยังผู้ช่วยดีบักการวาดของเราหรือไม่

119
00:09:01,700 --> 00:09:05,690
‫แล้วคุณจะจำได้ว่านี่คือการใช้พารามิเตอร์

120
00:09:05,690 --> 00:09:14,270
‫ดังนั้นให้แก้ไขพารามิเตอร์ของคุณ วาดกล้องดีบั๊กโดยใช้ข้อมูลโค้ดที่เราเพิ่งเขียนและทดสอบในวิวพอร์ต

121
00:09:14,300 --> 00:09:21,380
‫ไปและคลิกปุ่มทริกเกอร์สองสามครั้งในสถานที่ต่าง ๆ และดูว่ากล้องนั้นจบลงที่ใดแสดงวิดีโอหยุดชั่วคราวและไปกันเลย

122
00:09:22,470 --> 00:09:22,800
‫ตกลง.

123
00:09:22,800 --> 00:09:23,440
‫ยินดีต้อนรับกลับ.

124
00:09:23,460 --> 00:09:24,660
‫จึงได้เล่นมุมมอง

125
00:09:24,660 --> 00:09:29,720
‫ฉันจะคัดลอกชื่อของเมธอดและนำมาไว้ที่นี่เพราะเป็นพารามิเตอร์ขาออก

126
00:09:29,730 --> 00:09:34,080
‫ฉันจะต้องประกาศตัวแปรก่อนที่ฉันต้องการให้ค่าเหล่านั้นเข้าไป

127
00:09:34,080 --> 00:09:36,330
‫ฉันมีตำแหน่งเวกเตอร์ F

128
00:09:36,720 --> 00:09:41,340
‫เรามีการหมุน F rotator

129
00:09:42,260 --> 00:09:45,660
‫และเราต้องการส่งต่อสิ่งเหล่านี้เป็นข้อโต้แย้ง

130
00:09:45,680 --> 00:09:48,320
‫ขอผมแก้ไขการเยื้องตรงนั้นสักหน่อย

131
00:09:48,320 --> 00:09:51,860
‫และเราจะผ่านสถานที่ การหมุน

132
00:09:52,190 --> 00:09:58,580
‫และเรารู้ว่าเนื่องจากเพิ่งมีการประกาศไว้ที่นี่เมื่ออ่านข้อความนี้ เราจึงเดาได้ว่าตอนนี้ไม่มีพารามิเตอร์แล้ว

133
00:09:58,580 --> 00:10:04,130
‫แม้ว่า C++ จะไม่ได้มีประโยชน์ด้านไวยากรณ์ในเรื่องนี้ก็ตาม

134
00:10:04,460 --> 00:10:13,820
‫จากนั้นเราสามารถส่งผ่านตำแหน่งนี้แทนตำแหน่งของนักแสดง และเราสามารถส่งการหมุนนี้แทนการหมุนที่แอ็คทีฟไปยังกล้องดีบักการวาดของเรา

135
00:10:14,210 --> 00:10:19,270
‫และเราสามารถดำเนินการสร้างคอมไพล์นั้นและทดลองใช้ในตัวแก้ไขได้

136
00:10:19,280 --> 00:10:21,350
‫ดูเหมือนว่าการรวบรวมจะเสร็จสมบูรณ์

137
00:10:21,350 --> 00:10:23,120
‫ไปเล่นกันเถอะ

138
00:10:23,450 --> 00:10:29,150
‫และเมื่อฉันกดทริกเกอร์ คุณจะเห็นกล้องปรากฏขึ้นเหนือมุมมองของฉัน

139
00:10:29,150 --> 00:10:30,160
‫นั่นเป็นสัญญาณที่ดี

140
00:10:30,170 --> 00:10:32,510
‫ถ้าฉันถอยออกมาอีกนิด คุณจะเห็นว่าคุณไปที่นั่น

141
00:10:32,510 --> 00:10:38,300
‫เรามีกล้องเหล่านี้ที่ชี้ไปในทิศทางที่ถูกต้องจากที่ที่ฉันเพิ่งมองไป

142
00:10:38,300 --> 00:10:43,700
‫คุณคงนึกภาพออกว่าเราจะยิงรังสีออกมาจากกล้องตัวนั้นที่ส่วนท้ายของกล้องได้อย่างไร

143
00:10:43,700 --> 00:10:49,040
‫แล้วลองไปชนบางอย่างที่ฉันกำลังดูอยู่ตอนนั้น

144
00:10:49,040 --> 00:10:51,190
‫และนั่นคือสิ่งที่เราจะทำในการบรรยายครั้งต่อไป

145
00:10:51,200 --> 00:10:51,920
‫แล้วเจอกัน.

