﻿1
00:00:04,440 --> 00:00:05,670
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,670 --> 00:00:11,910
‫ในการบรรยายนี้ เราจะคำนวณระยะทางที่แพลตฟอร์มของเราย้ายจากตำแหน่งเริ่มต้น

3
00:00:11,910 --> 00:00:17,760
‫และแสดงในเครื่องมือแก้ไขเพื่อให้เราตรวจสอบและแก้ไขข้อบกพร่อง

4
00:00:17,790 --> 00:00:19,920
‫มาดูวิธีการทำกัน

5
00:00:20,660 --> 00:00:26,870
‫ตอนนี้เราได้เห็นแล้วว่าเราสามารถ Implement ส่วนแรกของ pseudocode ได้

6
00:00:26,870 --> 00:00:30,080
‫เราได้เขียนแพลตฟอร์ม MOVE ไว้ข้างหน้าแล้วตอนนี้ใช้งานได้

7
00:00:30,080 --> 00:00:33,890
‫ดังนั้นจึงเป็นแพลตฟอร์มการส่งกลับที่เรายังไม่ได้กล่าวถึง

8
00:00:34,160 --> 00:00:39,020
‫และคุณสามารถเห็นความคิดเห็นแรกที่มีการตรวจสอบว่าเราได้ย้ายไปแล้ว

9
00:00:39,230 --> 00:00:44,870
‫แล้วเราจะตรวจสอบได้อย่างไรว่าเราได้ก้าวไปไกลแค่ไหนตั้งแต่เริ่มเล่น?

10
00:00:44,870 --> 00:00:46,430
‫มีสององค์ประกอบนี้

11
00:00:46,430 --> 00:00:52,130
‫ก่อนอื่น เราต้องหาความแตกต่างระหว่างเวกเตอร์สองตัวกับระยะห่างระหว่างสองตัวนี้

12
00:00:52,250 --> 00:00:57,500
‫และอีกอย่างที่เราต้องคิดคือ จะติดตามว่าเราเริ่มต้นจากที่ใด

13
00:00:57,500 --> 00:01:00,470
‫ส่วนแรกค่อนข้างตรงไปตรงมา

14
00:01:00,470 --> 00:01:05,750
‫โชคดีที่สิ่งที่เราต้องทำคือไปที่แพลตฟอร์มเคลื่อนที่ของเรา

15
00:01:06,020 --> 00:01:12,080
‫H และเราต้องการสร้างตัวแปรใหม่ที่นี่ แต่ไม่ใช่ตัวแปรที่เปิดเผยต่อพิมพ์เขียว

16
00:01:12,080 --> 00:01:19,280
‫ครั้งหนึ่ง นี่เป็นเพียงตัวแปรสำหรับ C++ เท่านั้น ดังนั้นเราจึงไม่จำเป็นต้องวางคุณสมบัติใหม่ไว้บนสุด

17
00:01:19,520 --> 00:01:27,740
‫และมันจะเป็นเวกเตอร์ F ที่เรียกว่าตำแหน่งเริ่มต้นหรือตำแหน่งเพื่อใช้คำศัพท์เดียวกับที่ใช้ใน

18
00:01:27,740 --> 00:01:28,670
‫Unreal

19
00:01:28,880 --> 00:01:34,820
‫และเราจะไม่ตั้งค่านี้เป็นค่าใดๆ เลย เพราะมันไม่มีเหตุผลที่จะเริ่มต้นตำแหน่ง

20
00:01:34,820 --> 00:01:39,470
‫เรายังไม่รู้ แต่เราจะรู้ได้ใน Begin Play

21
00:01:39,470 --> 00:01:40,760
‫นั่นคือสิ่งที่เรากำลังจะทำ

22
00:01:40,760 --> 00:01:45,170
‫เราจะไปที่ C++ แล้วเริ่มเล่นหลังจากซุปเริ่มเล่นบิต

23
00:01:45,170 --> 00:01:51,380
‫เราจะกำหนดตำแหน่งเริ่มต้นเพื่อให้เราสามารถบอกตำแหน่งเริ่มต้นได้

24
00:01:51,380 --> 00:01:56,810
‫และจำไว้ว่า เราไม่ได้ใส่เวกเตอร์ f ไว้ข้างหน้านี้ เพราะเรากำลังพยายามอ้างถึงตัวแปรคลาส

25
00:01:56,810 --> 00:02:00,470
‫แทนที่จะสร้างตัวแปรโลคัล

26
00:02:00,470 --> 00:02:06,860
‫ดังนั้นเราจะตั้งค่าตำแหน่งเริ่มต้นนี้ให้เท่ากับตำแหน่งรับนักแสดง เพราะในตอนเริ่มต้นของการเล่น

27
00:02:06,860 --> 00:02:09,740
‫นักแสดงอยู่ที่จุดเริ่มต้น

28
00:02:09,740 --> 00:02:15,590
‫ดังนั้นเราจึงได้กำหนดตำแหน่งเริ่มต้น และนั่นหมายความว่าเรามีตัวแปรที่คงอยู่สำหรับอินสแตนซ์ทั้งหมดของคลาสนี้

29
00:02:15,590 --> 00:02:18,680
‫ดังนั้นเราจึงสามารถใช้มันซ้ำและทำเครื่องหมายได้เช่นกัน

30
00:02:18,800 --> 00:02:21,680
‫และเราได้ตัวแปรที่เราสามารถลองหาระยะห่างระหว่างกันได้

31
00:02:21,680 --> 00:02:27,650
‫เราสามารถพูดได้ว่า เฮ้ ตำแหน่งปัจจุบันเบี่ยงเบนไปจากตำแหน่งเริ่มต้นนั้นไกลแค่ไหน?

32
00:02:27,650 --> 00:02:32,810
‫เพื่อให้สามารถทำเช่นนี้ได้ ฉันต้องเพิ่มไวยากรณ์ C++ อีกเล็กน้อยในอภิธานศัพท์ของเรา

33
00:02:32,810 --> 00:02:38,720
‫อย่างแรก จะเรียกว่า Scope Resolution Operator ซึ่งเรียกยากหน่อย แต่จริงๆ แล้วมันคือตัวดำเนินการโคลอนคู่ที่เราเคยเห็นในไฟล์

34
00:02:38,720 --> 00:02:44,360
‫C++ ของเรามาก่อน

35
00:02:44,510 --> 00:02:52,190
‫และโดยพื้นฐานแล้ว ทั้งหมดที่ทำได้คือให้คุณดูภายในคลาสได้ในลักษณะเดียวกับตัวดำเนินการ DOT

36
00:02:52,190 --> 00:02:55,430
‫ช่วยให้คุณดูภายในอินสแตนซ์ของคลาสได้

37
00:02:55,430 --> 00:02:57,950
‫ลองมาดูรายละเอียดเพิ่มเติมกันสักหน่อย

38
00:02:58,070 --> 00:03:06,200
‫เรารู้ว่าฟังก์ชันติ๊กเป็นของคลาสแพลตฟอร์มที่กำลังเคลื่อนที่ แต่มันไม่ใช่ของอินสแตนซ์เฉพาะของคลาสนั้น

39
00:03:06,200 --> 00:03:13,760
‫ทุกอินสแตนซ์ของแพลตฟอร์มที่เคลื่อนไหวมีการใช้งานแบบเดียวกันซึ่งหมายถึงการเป็นคลาส

40
00:03:13,760 --> 00:03:24,440
‫ดังนั้นตัวดำเนินการความละเอียดขอบเขตที่นี่ระหว่างแพลตฟอร์มที่กำลังเคลื่อนที่และ Tick กำลังบอกเราว่านี่คือขีดที่เป็นของคลาสแพลตฟอร์มที่กำลังเคลื่อนที่

41
00:03:24,440 --> 00:03:31,790
‫เช่นเดียวกับก่อนหน้านี้ เราใช้ตัวดำเนินการจุดเพื่อรับ x ที่เป็นของตำแหน่งปัจจุบัน

42
00:03:32,120 --> 00:03:39,710
‫ตำแหน่งปัจจุบันคือตัวอย่างหนึ่งของเวกเตอร์ F แต่เราสามารถใช้สิ่งนี้เพื่อรับฟังก์ชันที่เป็นของคลาสเวกเตอร์

43
00:03:39,710 --> 00:03:46,340
‫F และไม่ทำงานบนอินสแตนซ์เฉพาะของคลาสนั้น

44
00:03:46,340 --> 00:03:50,510
‫ตัวอย่างหนึ่งคือการหาระยะห่างระหว่างเวกเตอร์สองตัว

45
00:03:50,510 --> 00:03:56,960
‫วิธีที่เราทำใน Unreal คือการใช้ฟังก์ชันที่อยู่ในคลาสเวกเตอร์ F

46
00:03:56,960 --> 00:04:05,000
‫เราก็เลยทำเวกเตอร์ f, แล้วก็โคลอนโคลอนเพื่อมองเข้าไปในคลาสนั้นว่ามีฟังก์ชันใดบ้างที่เราสามารถใช้ได้

47
00:04:05,000 --> 00:04:07,100
‫และเราสามารถมองผ่านได้

48
00:04:07,100 --> 00:04:11,480
‫และตอนนี้ฉันแค่ดึงความสนใจของคุณไปที่การเติมข้อความอัตโนมัติที่ปรากฏขึ้น ณ จุดนี้

49
00:04:11,480 --> 00:04:17,300
‫ฉันไม่ได้พูดถึงมันในอดีต แต่เมื่อเราดำเนินการเหล่านี้ มันพยายามที่จะฉลาดและบอกเราว่าฟังก์ชั่นใดบ้างที่มีอยู่ในคลาสเวกเตอร์

50
00:04:17,300 --> 00:04:23,720
‫F นั้น

51
00:04:23,720 --> 00:04:25,310
‫และคุณจะเห็นว่ามีไม่กี่คน

52
00:04:25,310 --> 00:04:29,840
‫สิ่งที่เรากำลังมองหาเรียกว่า Dist Short สำหรับระยะทาง

53
00:04:29,840 --> 00:04:34,880
‫ตอนนี้คุณจะสังเกตเห็นว่ามีระยะทางที่เรียกว่าระยะทางจริง ๆ และมีความหมายเหมือนกัน

54
00:04:34,880 --> 00:04:42,590
‫เราสามารถใช้ได้อย่างใดอย่างหนึ่ง แต่ฉันจะใช้อันที่สั้นกว่าเพื่อให้โค้ดกระชับขึ้นและเราสามารถเปิดวงเล็บได้

55
00:04:42,590 --> 00:04:50,210
‫และอีกครั้ง การเติมข้อความอัตโนมัติเข้ามาช่วยเราโดยบอกว่าต้องใช้อะไรในการโต้แย้ง

56
00:04:50,210 --> 00:04:56,330
‫เราจะเห็นได้ว่าอาร์กิวเมนต์แรกคือ f vector สาม D และอันที่สองเป็นผลที่มีผลสาม

57
00:04:56,330 --> 00:04:57,260
‫D เช่นกัน

58
00:04:57,260 --> 00:05:03,260
‫ผมก็เลยเป็นความจริงที่ว่ามันถูกเรียกว่าเอฟเฟกต์ 3 D ที่นี่ค่อนข้างแปลก แต่โดยพื้นฐานแล้วมันขอเวกเตอร์

59
00:05:03,260 --> 00:05:04,340
‫f

60
00:05:04,340 --> 00:05:15,140
‫มันบอกว่าถ้าคุณส่งอาร์กิวเมนต์สองตัว, ทั้งคู่เป็นเวกเตอร์ f, ผมจะบอกคุณว่าค่าที่ส่งคืนคือบิตนี่ทางซ้ายมือจะเป็นสองเท่า

61
00:05:15,140 --> 00:05:18,620
‫ตอนนี้การดับเบิ้ลเป็นเพียงการลอยตัวที่แม่นยำยิ่งขึ้น

62
00:05:18,620 --> 00:05:20,210
‫ดังนั้นเราจึงสามารถพูดได้

63
00:05:20,310 --> 00:05:22,290
‫นั่นคือลอยออกมาจากที่นี่

64
00:05:22,290 --> 00:05:26,010
‫นิพจน์ที่เราสร้างขึ้นจะสร้างทุ่น

65
00:05:26,490 --> 00:05:27,060
‫สุดยอด.

66
00:05:27,060 --> 00:05:32,490
‫สิ่งที่เราจะทำคือเราจะพยายามหาระยะห่างระหว่างตำแหน่งเริ่มต้น

67
00:05:32,490 --> 00:05:36,630
‫เราจะพิมพ์ตำแหน่งเริ่มต้นเป็นอาร์กิวเมนต์แรก

68
00:05:36,630 --> 00:05:40,680
‫แล้วอันที่สองจะเป็นตำแหน่งปัจจุบัน

69
00:05:40,830 --> 00:05:47,580
‫ไม่ต้องกังวล ในขั้นตอนนี้ มันไม่สำคัญหรอกว่าเราจะวางรอบนี้ไปทางไหน เพราะระยะห่างระหว่างเวกเตอร์สองตัวจะเท่ากัน

70
00:05:47,580 --> 00:05:52,290
‫ไม่ว่าคุณจะเริ่มจาก A ไป B หรือ B ไป A ก็จะมีระยะทางเท่ากันเสมอ

71
00:05:52,290 --> 00:05:54,780
‫เราก็ใส่แบบนี้ก็ได้ ถ้าคุณต้องการ

72
00:05:55,140 --> 00:05:59,550
‫ตอนนี้เราได้นิพจน์ที่คืนค่าทศนิยม

73
00:05:59,550 --> 00:06:06,870
‫ดังนั้นฉันจึงขอท้าให้คุณอัปเดตคุณสมบัติใหม่โดยใช้นิพจน์นี้ เพื่อที่เราจะได้เห็นว่าค่าของมันเป็นอย่างไร

74
00:06:06,870 --> 00:06:13,440
‫ดังนั้นสร้างคุณสมบัติใหม่ของคุณ float และเรียกมันว่าอะไรก็ได้ที่คุณต้องการ จากนั้นอัปเดตสิ่งนี้ทุกจุดด้วยค่า

75
00:06:13,440 --> 00:06:19,380
‫f vector dist แล้วเล่นเกมและดูว่าเกิดอะไรขึ้น

76
00:06:19,380 --> 00:06:21,690
‫คุณได้รับผลลัพธ์ที่คุณคาดหวังหรือไม่?

77
00:06:21,690 --> 00:06:24,680
‫มันเพิ่มขึ้นอย่างรวดเร็วอย่างที่คุณคาดหวังหรือไม่?

78
00:06:24,690 --> 00:06:26,670
‫หยุดวิดีโอชั่วคราวและไปกันเลย

79
00:06:29,890 --> 00:06:30,370
‫ตกลง.

80
00:06:30,370 --> 00:06:31,060
‫ยินดีต้อนรับกลับ.

81
00:06:31,060 --> 00:06:34,690
‫อย่างแรกเลย เราจะสร้างคุณสมบัติใหม่

82
00:06:34,690 --> 00:06:40,570
‫ผมจะใส่สิ่งนี้ไว้เหนือตำแหน่งเริ่มต้น เพื่อให้เราจัดกลุ่มคุณสมบัติทั้งหมดเข้าด้วยกัน

83
00:06:40,750 --> 00:06:47,050
‫เราจะมีการแก้ไขคุณสมบัติใหม่ทุกที่ ความจริงแล้วเราไม่จำเป็นต้องแก้ไขสิ่งนี้ได้

84
00:06:47,050 --> 00:06:51,640
‫คุณจึงอาจจินตนาการได้ว่าการแก้ไขที่ใดก็ได้หมายความว่าคุณสามารถแก้ไขได้

85
00:06:51,640 --> 00:06:59,410
‫เรายังมีส่วนที่มองเห็นได้ทุกที่ที่ไม่อนุญาตให้เราแก้ไขแต่ทำให้เรามองเห็นได้

86
00:06:59,410 --> 00:07:00,730
‫นั่นคือสิ่งที่ฉันจะใช้

87
00:07:00,730 --> 00:07:07,180
‫แต่ฉันจะทิ้งหมวดหมู่ไว้ที่นี่เพื่อความง่าย เพราะเราแค่ใช้ตัวแปรนี้เพื่อดูว่าเกิดอะไรขึ้น

88
00:07:07,180 --> 00:07:16,030
‫มันจะเป็นประเภททุ่นลอยตามที่ฉันได้กล่าวไว้และฉันจะเรียกสิ่งนี้ว่าระยะทางที่เคลื่อนที่เพื่อให้ชัดเจนว่าเรากำลังดูอะไรในตัวตรวจสอบ

89
00:07:16,030 --> 00:07:22,330
‫และฉันจะตั้งค่าเริ่มต้นเป็นลบหนึ่ง เพื่อให้เรารู้ว่าเราได้อัปเดตแล้ว

90
00:07:22,330 --> 00:07:25,240
‫หากขึ้นว่าลบหนึ่ง แสดงว่าการอัปเดตยังไม่ผ่าน

91
00:07:25,510 --> 00:07:27,490
‫ผมจะย้ายระยะทางนี้

92
00:07:27,490 --> 00:07:33,940
‫เราจะพูดถึงการใช้งานของเราและติ๊ก และเราจะกำหนดระยะทางที่เคลื่อนที่เท่ากับ

93
00:07:33,940 --> 00:07:36,760
‫F ระยะโคลอนของเวกเตอร์ F

94
00:07:36,760 --> 00:07:43,210
‫ดังนั้นการใช้ตัวดำเนินการความละเอียดขอบเขตนั้นเพื่อรับฟังก์ชันระยะทางแล้วจบบรรทัดด้วยเครื่องหมายอัฒภาค

95
00:07:43,570 --> 00:07:44,080
‫โอเคโดก.

96
00:07:44,080 --> 00:07:50,770
‫ดังนั้นเราจะไปที่ Unreal แล้วกดปุ่มคอมไพล์แล้วปิดเทอร์มินัลได้เลย

97
00:07:50,770 --> 00:07:55,630
‫และเราควรเห็นว่าระยะนี้เคลื่อนที่ โดยแสดงเป็นลบหนึ่ง

98
00:07:55,630 --> 00:08:00,850
‫คุณจะเห็นว่าเป็นสีเทาเพราะแก้ไขไม่ได้เพราะมองเห็นได้ ไม่ได้แก้ไขที่ไหนเลย

99
00:08:01,090 --> 00:08:07,450
‫เอาล่ะ ไปเล่นกันเลย และเราจะต้องแน่ใจว่าเราเลือกแท่นเคลื่อนที่ในโครงร่าง

100
00:08:07,450 --> 00:08:13,000
‫และเราสามารถดูระยะทางที่เคลื่อนมาที่นี่ และคุณจะเห็นว่าทรัพย์สินเพิ่มขึ้นอย่างรวดเร็วที่ประมาณ

101
00:08:13,000 --> 00:08:18,010
‫1 ถึง 300 ต่อวินาที

102
00:08:18,010 --> 00:08:24,190
‫มันจึงวิ่งด้วยความเร็วที่ฉันคาดไว้ คือ 100 ต่อวินาที

103
00:08:24,190 --> 00:08:25,810
‫เลยดูเหมือนประสบความสำเร็จ

104
00:08:25,810 --> 00:08:30,900
‫เราสามารถคำนวณระยะทางที่เคลื่อนที่และเห็นภาพได้

105
00:08:30,910 --> 00:08:31,480
‫สิ่งที่ดี

106
00:08:31,480 --> 00:08:33,220
‫เจอกันใหม่ตอนหน้าค่ะ

