﻿1
00:00:04,390 --> 00:00:05,410
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,420 --> 00:00:11,230
‫ในการบรรยายนี้ เราจะมาแนะนำฟังก์ชันของสมาชิก และฟังก์ชันนี้จะปลอดภัยและเป็นฟังก์ชันปกติ

3
00:00:11,230 --> 00:00:17,680
‫ซึ่งจะทำให้เราสามารถจับทิศทางของเวกเตอร์เฉพาะได้

4
00:00:17,680 --> 00:00:19,900
‫มาดูกันว่ามันทำงานอย่างไร

5
00:00:20,690 --> 00:00:28,200
‫ดังนั้น วิธีง่ายๆ ของเราในการส่งแพลตฟอร์มกลับไปในทิศทางตรงกันข้ามคือทำงานด้วยความเร็วที่เราได้ทดสอบแล้ว

6
00:00:28,220 --> 00:00:34,130
‫แต่จะเกิดอะไรขึ้นถ้าฉันพูดว่า เฮ้ มาทำให้แพลตฟอร์มนี้เร็วขึ้นสิบเท่ากันเถอะ

7
00:00:34,160 --> 00:00:36,570
‫ไปข้างหน้าและเล่นและดูว่าเกิดอะไรขึ้น

8
00:00:36,590 --> 00:00:43,710
‫จู่ๆ ชานชาลาก็กระโดดไปข้างหน้าค่อนข้างมาก และมันก็ไม่ได้วนเวียนอยู่ในตำแหน่งเดิมเหมือนเมื่อก่อน

9
00:00:43,730 --> 00:00:53,330
‫และเหตุผลของเรื่องนี้ก็เพราะว่าตำแหน่งปัจจุบัน เมื่อเราตั้งค่าให้เป็นตำแหน่งเริ่มต้น ไม่จำเป็นต้องเป็นระยะทางที่เคลื่อนที่อย่างแน่นอน

10
00:00:53,330 --> 00:00:58,910
‫เราอาจมีค่าเกินได้

11
00:00:58,910 --> 00:01:01,490
‫และนั่นก็ถูกจับในคำสั่ง if

12
00:01:01,490 --> 00:01:07,310
‫เรากำลังบอกว่าระยะทางที่เคลื่อนที่นั้นมากกว่าระยะเคลื่อนที่ ซึ่งหมายความว่าเราจะโอเวอร์ช็อต

13
00:01:07,310 --> 00:01:11,680
‫เราต้องโอเวอร์ช็อตเพื่อเรียกสิ่งนี้ if คำสั่ง

14
00:01:11,690 --> 00:01:17,840
‫แต่คำถามคือโดยมากน้อยเพียงใด และนั่นจะขึ้นอยู่กับว่าเวลาเดลต้าจะมากเพียงใด

15
00:01:17,840 --> 00:01:26,990
‫เราสามารถเกินจำนวนได้มาก โดยเฉพาะอย่างยิ่งหากความเร็วของแท่นสูง ซึ่งหมายความว่าตำแหน่งเริ่มต้นของเราอาจคลาดเคลื่อนเมื่อเวลาผ่านไป

16
00:01:26,990 --> 00:01:28,550
‫อาจไม่คงที่

17
00:01:28,550 --> 00:01:39,770
‫วิธีที่ดีกว่าในการทำเช่นนี้คือการคำนวณว่าเราต้องเคลื่อนที่จากตำแหน่งเริ่มต้นเดิมไปไกลแค่ไหนเพื่อไปยังตำแหน่งใหม่โดยใช้ระยะการเคลื่อนที่ที่แน่นอน

18
00:01:39,770 --> 00:01:43,040
‫ลองนึกภาพการคำนวณกลับไปกลับมา

19
00:01:43,040 --> 00:01:46,430
‫เรากำลังบอกว่าเรามีแท่นอยู่ที่จุดเริ่มต้นตรงนี้

20
00:01:46,520 --> 00:01:55,840
‫เราบอกว่ามันมีความเร็วซึ่งเราสามารถแทนด้วยลูกศรที่เป็นทิศทางและขนาด และยังมีระยะทางที่เราอยากให้มันเคลื่อนที่ด้วย

21
00:01:55,850 --> 00:01:58,160
‫เราจะแสดงมันด้วยวงเล็บปีกกานี่

22
00:01:58,700 --> 00:02:05,720
‫สิ่งที่เราพูดคือเราต้องการหาจุดที่แน่ชัดว่าชานชาลาจะอยู่ตรงจุดใด ไม่ใช่โอเวอร์ช็อต

23
00:02:05,720 --> 00:02:09,960
‫แต่ต้องการแค่ตำแหน่งสุดท้ายเท่านั้น

24
00:02:09,980 --> 00:02:14,960
‫ทีนี้ วิธีที่เราสามารถทำได้คือ กำหนดทิศทางของลูกศรความเร็วนั้น

25
00:02:14,960 --> 00:02:22,610
‫ในภาษาเวกเตอร์ นี่เรียกว่าปกติของลูกศร และโดยพื้นฐานแล้วมันลดขนาดลงมาเป็นขนาดหนึ่ง

26
00:02:22,610 --> 00:02:25,970
‫ดังนั้นเราจึงได้ทิศทาง แต่มีขนาดเดียว

27
00:02:25,970 --> 00:02:31,700
‫นั่นทำให้เรารู้จำนวนนี้ โดยพื้นฐานแล้ว ขนาดของความเร็ว เรากำลังไปได้เร็วแค่ไหน

28
00:02:32,090 --> 00:02:45,230
‫แล้วสิ่งที่เราทำได้คือเราสามารถคูณทิศทางนั้นด้วยปริมาณของระยะทาง เพื่อให้ได้ลูกศรที่ทำให้เรามีการเคลื่อนที่ทั้งหมดจากตำแหน่งเริ่มต้นไปยังตำแหน่งสิ้นสุด

29
00:02:45,230 --> 00:02:46,310
‫อย่างแน่นอน.

30
00:02:46,310 --> 00:02:49,760
‫มาดูกันว่าเราจะทำสิ่งนี้ได้อย่างไรใน C++

31
00:02:49,760 --> 00:02:52,460
‫สิ่งที่เรากำลังมองหาคือจุดเริ่มต้นใหม่

32
00:02:52,460 --> 00:02:59,780
‫ลองลบวิธีที่เราทำอยู่ตอนนี้ แล้วเราจะได้ตำแหน่งเริ่มต้นเท่ากับ ทีนี้ มันจะเท่ากับอะไร?

33
00:02:59,780 --> 00:03:05,150
‫ทีนี้ มันจะเท่ากับ อย่างแรกเลย ตำแหน่งเริ่มต้น บวกอะไรสักอย่าง เพราะเราเริ่มจากตรงนี้

34
00:03:05,150 --> 00:03:10,850
‫และเรากำลังบวกเวกเตอร์สีเขียวนี้เพื่อไปสิ้นสุด

35
00:03:10,850 --> 00:03:13,250
‫แล้วเวกเตอร์สีเขียวนั่นคืออะไร?

36
00:03:13,670 --> 00:03:18,770
‫นั่นคือจุดที่เราต้องได้รับความเร็วปกติของแพลตฟอร์ม

37
00:03:18,770 --> 00:03:24,740
‫และเพื่อให้เข้าใจง่ายขึ้น ผมจะแยกมันออกเป็นตัวแปรของมันเอง

38
00:03:24,740 --> 00:03:32,630
‫เราจะสร้างตัวแปรใหม่ของเวกเตอร์ประเภท F ซึ่งผมจะเรียกทิศทางการเคลื่อนที่

39
00:03:32,630 --> 00:03:38,060
‫เพื่อให้ชัดเจนว่าเรากำลังพยายามเก็บไว้ในนั้นคืออะไร

40
00:03:38,060 --> 00:03:47,780
‫แล้วเราจะ รับสิ่งนี้จากจุดความเร็วของแพลตฟอร์ม ให้ปลอดภัย ปกติ แล้วใส่วงเล็บในตอนท้าย

41
00:03:47,780 --> 00:03:48,950
‫เกิดอะไรขึ้นที่นี่?

42
00:03:48,950 --> 00:03:50,660
‫เราไม่เคยเห็นสิ่งนี้มาก่อน

43
00:03:50,660 --> 00:03:54,770
‫เราใช้ Dot เพื่อจับส่วนประกอบของเวกเตอร์ X, Y และ Z

44
00:03:54,770 --> 00:03:55,970
‫นั่นคือตัวแปร

45
00:03:56,060 --> 00:04:04,580
‫แต่ใน C ++ และในการเขียนโปรแกรมเชิงวัตถุโดยทั่วไป เรายังมีฟังก์ชันที่มีอยู่ในคลาสด้วย ดังนั้นเราจึงสามารถใช้ตัวดำเนินการ

46
00:04:04,580 --> 00:04:08,510
‫DOT เพื่อจับหนึ่งในนั้นได้

47
00:04:08,510 --> 00:04:13,250
‫เราใช้เครื่องหมายทวิภาคเมื่อเราพยายามเอามันออกจากคลาสเอง

48
00:04:13,250 --> 00:04:25,520
‫แต่เมื่อเราต้องการดำเนินการกับเวกเตอร์จริง ดังนั้นเวกเตอร์ความเร็วของแพลตฟอร์ม เราสามารถใช้ตัวดำเนินการจุดเพื่อให้ได้ค่าปกติของเวกเตอร์นั้น

49
00:04:25,520 --> 00:04:30,830
‫นั่นคือสิ่งที่เราทำที่นี่ โดยใช้ฟังก์ชันสมาชิกแทนตัวแปรสมาชิก

50
00:04:31,070 --> 00:04:36,770
‫เราก็ได้ค่าปกติที่ปลอดภัยของความเร็วของแท่นแล้ว และเราจะใส่เครื่องหมายอัฒภาคต่อท้ายบรรทัด

51
00:04:36,770 --> 00:04:41,360
‫เพราะตรงนี้ เรามีตัวแปรที่เรากำลังบอกว่านั่นคือทิศทางการเคลื่อนที่

52
00:04:41,360 --> 00:04:50,330
‫ตอนนี้เราสามารถใช้สิ่งนั้นในบรรทัดถัดไปเพื่อทำทิศทางการเคลื่อนที่คูณด้วยระยะการเคลื่อนที่ที่กำหนดค่าไว้

53
00:04:50,330 --> 00:04:56,870
‫เนื่องจากเราต้องการเคลื่อนที่ไปยังจุดสิ้นสุดพอดี ไม่ใช่โอเวอร์ชูต

54
00:04:56,870 --> 00:05:01,850
‫และหลังจากที่เราทำเสร็จแล้ว เราควรย้ายแพลตฟอร์มของเราไปยังตำแหน่งสุดท้าย

55
00:05:01,850 --> 00:05:08,630
‫ดังนั้น เราจะกำหนดให้ตำแหน่งนักแสดงเป็นตำแหน่งเริ่มต้น เพราะไม่เช่นนั้น แพลตฟอร์มของเราจะเกินพิกัดและผ่านตำแหน่งสิ้นสุดนั้น

56
00:05:08,630 --> 00:05:16,460
‫เนื่องจากเราจะอัปเดตด้วยตำแหน่งปัจจุบัน ซึ่งเป็นตำแหน่งที่โอเวอร์ช็อต

57
00:05:16,700 --> 00:05:20,000
‫นั่นทำให้เราเคลื่อนที่ไปยังจุดสิ้นสุดได้อย่างแม่นยำ

58
00:05:20,050 --> 00:05:23,710
‫แล้วเริ่มจากตำแหน่งเริ่มต้นใหม่นั้น

59
00:05:23,740 --> 00:05:31,420
‫ตอนนี้สิ่งสำคัญคือเราต้องอัปเดตความเร็วของแพลตฟอร์มหลังจากที่เราทำทั้งหมดนี้แล้ว เนื่องจากเรากำลังใช้มันเพื่อควบคุมทิศทางการเคลื่อนที่

60
00:05:31,420 --> 00:05:36,230
‫ดังนั้นฉันจะอัปเดตความเร็วของแพลตฟอร์มหลังจากที่เรากำหนดตำแหน่งนักแสดงแล้ว

61
00:05:36,250 --> 00:05:40,690
‫ทีนี้ลองย้อนกลับไปที่หนึ่งรีลแล้วกดคอมไพล์แล้วดูว่าสิ่งนี้ได้รับการแก้ไขหรือไม่

62
00:05:40,690 --> 00:05:47,230
‫ปัญหาเกี่ยวกับแพลตฟอร์มของเราในการเดินหน้าและถอยหลัง เรามาปิดเทอร์มินัลนี้แล้วกดปุ่มเล่น

63
00:05:47,230 --> 00:05:56,020
‫และตอนนี้ถ้าเราดู แพลตฟอร์มกำลังเคลื่อนที่อย่างรวดเร็ว แต่มันเคลื่อนที่ได้อย่างน่าเชื่อถือรอบๆ ตำแหน่งเริ่มต้นและจุดสิ้นสุดที่เราคาดหวัง

64
00:05:56,020 --> 00:05:58,300
‫นั่นคือทั้งหมดที่ฉันอยากจะกล่าวถึงในการบรรยายครั้งนี้

65
00:05:58,300 --> 00:06:03,880
‫เราเพิ่งแก้ไขข้อผิดพลาดเล็กน้อยที่อาจครอบตัดสำหรับการกำหนดค่าแพลตฟอร์มบางส่วนของเรา

66
00:06:03,880 --> 00:06:05,380
‫เจอกันใหม่ตอนหน้าค่ะ

