﻿1
00:00:04,700 --> 00:00:05,570
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,570 --> 00:00:10,820
‫ในการบรรยายนี้ เราจะเรียนรู้วิธีเชื่อมต่อแอนิเมชั่นของเรากับการเล่นเกมของเรา

3
00:00:10,820 --> 00:00:17,270
‫และเราจะทำให้ความเร็วของตัวละครของเราเชื่อมโยงกับพื้นที่ผสมผสานเพื่อให้เราได้รับผลกระทบนี้

4
00:00:17,270 --> 00:00:19,130
‫มาดูวิธีทำกันเลยดีกว่า

5
00:00:20,750 --> 00:00:21,140
‫ตกลง.

6
00:00:21,140 --> 00:00:27,950
‫ดังนั้นเราจึงมีพื้นที่ผสมผสานเพื่อรวมเข้ากับตัวละคร AVP Shooter ตัวนี้

7
00:00:28,400 --> 00:00:37,430
‫สิ่งแรกที่ฉันจะทำคือฉันจะลบทั้งสองส่วนผสมนี้ที่เราใช้เป็นตัวอย่างว่ากราฟแอนิเมชั่นพิมพ์เขียวของแอนิเมชั่นทำงานอย่างไร

8
00:00:37,430 --> 00:00:43,610
‫และแทนที่เราจะนำเข้าจากเบราว์เซอร์เนื้อหาที่ด้านล่างขวา พื้นที่ผสม

9
00:00:43,610 --> 00:00:46,670
‫เราก็เลยสร้างการเคลื่อนไหวขีดล่างของ BBS ขึ้นมา

10
00:00:46,700 --> 00:00:52,160
‫หากคุณลากมันมาที่กราฟแอนิเมชันของคุณ คุณจะเห็นว่ามันนำโหนดสีเขียวเล็กๆ มาไว้ที่นี่

11
00:00:52,550 --> 00:01:02,450
‫และเช่นเดียวกับโหนดผสมอื่นๆ และสิ่งต่างๆ เช่นนั้น เรามีตัวตนและข้อกำหนดที่เราสามารถลากเข้าไปในผลลัพธ์ของเราได้

12
00:01:02,450 --> 00:01:09,800
‫และถ้าฉันกดคอมไพล์ คุณจะเห็นว่ามันอยู่ในพื้นที่เริ่มต้นของเรา และจากนั้นคุณสามารถเห็นการแสดงภาพเล็กๆ

13
00:01:09,800 --> 00:01:20,990
‫นี้ ซึ่งค่อนข้างสะดวกสำหรับการผสมผสานพื้นที่เล็กๆ เข้ามาที่นี่

14
00:01:21,860 --> 00:01:26,180
‫เราน่าจะอยากทำอย่างหลัง ดังนั้นฉันจะไปลบตัวแปรสองตัวที่เรามีอยู่ทางซ้ายและทางข้างหน้า

15
00:01:26,180 --> 00:01:33,920
‫เพราะตอนนี้เรารู้แล้วว่าสิ่งที่เราต้องการคือมุมซึ่งก็คือ กำลังจะลอยกระทง

16
00:01:33,920 --> 00:01:39,710
‫ลองเปลี่ยนเป็น float และเราต้องการตัวแปรความเร็วด้วย ซึ่งก็คือ float

17
00:01:39,710 --> 00:01:40,400
‫ด้วย

18
00:01:40,610 --> 00:01:47,210
‫และเราสามารถแก้ไขสองตัวนี้ในตัวแปรความเร็วเป็นความเร็วและมุมเป็นมุมได้

19
00:01:47,270 --> 00:01:53,450
‫และเราจะตีคอมไพล์ ดูที่ตัวแก้ไขการแสดงตัวอย่างเคลื่อนไหวของเรา และปรับแต่งค่า

20
00:01:53,450 --> 00:01:56,810
‫ก่อนอื่นเลย เรามาเพิ่มความเร็วกันก่อนดีกว่า

21
00:01:57,620 --> 00:02:01,640
‫มาเพิ่มความเร็วให้ถึง 30 กันเถอะ

22
00:02:01,820 --> 00:02:02,600
‫ดูว่าเกิดอะไรขึ้น

23
00:02:02,600 --> 00:02:02,940
‫พวกเขาไป.

24
00:02:02,960 --> 00:02:05,990
‫เขาเริ่มเดินผ่านมา ยกขึ้นเป็น 70

25
00:02:06,020 --> 00:02:08,030
‫เขาเข้าใกล้การวิ่งมากขึ้น

26
00:02:08,030 --> 00:02:09,440
‫เอาไป 100 ครับ

27
00:02:09,740 --> 00:02:11,030
‫ไม่ใช่สิบครับ 100

28
00:02:11,030 --> 00:02:13,940
‫จากนั้นเขาก็วิ่งเต็มที่แล้วเราก็เปลี่ยนมุมได้

29
00:02:13,940 --> 00:02:20,420
‫ที่ 90 องศา เขาจะไปทางขวา 90 องศา -90 กำลังคิดว่าจะไปทางซ้าย

30
00:02:20,810 --> 00:02:21,890
‫เราสามารถไปที่ไหนสักแห่งในระหว่าง

31
00:02:21,890 --> 00:02:23,120
‫คุณสามารถพูดได้ว่า 45 องศา

32
00:02:23,120 --> 00:02:30,800
‫คุณสามารถเห็นเขาวิ่งในมุม 45 องศา และคุณสามารถเห็นพื้นที่ผสมที่มันพยายามเลือกในพื้นที่ผสมและภาพเคลื่อนไหวอะไร

33
00:02:30,800 --> 00:02:36,380
‫เป็นการผสมผสานระหว่างแอนิเมชั่นไปข้างหน้ากับแอนิเมชั่นด้านขวา

34
00:02:36,380 --> 00:02:37,310
‫90 องศา

35
00:02:37,700 --> 00:02:39,230
‫เยี่ยมเลย

36
00:02:39,230 --> 00:02:40,550
‫เราทำได้แล้ว

37
00:02:40,550 --> 00:02:47,270
‫แต่อย่างที่เราทราบ มันต้องขับเคลื่อนโดยการเล่นเกมจริงของเรา และทำไมเราถึงทำอย่างนั้นล่ะ?

38
00:02:47,270 --> 00:02:55,820
‫ทำไมเราไม่มีแอนิเมชั่นขับเคลื่อนการเล่นเกมของเราโดยบอกว่า เราต้องก้าวไปข้างหน้าด้วยความเร็วแบบนั้นและอย่างนั้นเหรอ?

39
00:02:56,120 --> 00:03:07,730
‫เหตุผลที่ไม่ทำเช่นนั้น เหตุผลที่ไม่ใช้แอนิเมชั่นเพื่อขับเคลื่อนการเล่นเกมก็คือคุณมักจะต้องการให้นักออกแบบของคุณสามารถปรับแต่งตัวแปรทุกประเภทเกี่ยวกับการเล่นเกมของคุณได้

40
00:03:07,730 --> 00:03:13,340
‫คุณต้องการให้พวกเขาพูดว่า โอเค รู้สึกไม่ถูกต้องที่ตัวละครตัวนี้วิ่งด้วยความเร็วนี้

41
00:03:13,340 --> 00:03:15,230
‫เขาต้องวิ่งด้วยความเร็วนี้แทน

42
00:03:15,410 --> 00:03:17,990
‫และการเดินควรจะเร็วกว่านี้

43
00:03:18,320 --> 00:03:23,120
‫ดังนั้นคุณจึงไม่ต้องการให้แอนิเมชั่นของคุณจำกัดการออกแบบและความรู้สึกของเกม

44
00:03:23,390 --> 00:03:28,190
‫คุณต้องการให้แอนิเมชั่นหลุดออกจากความรู้สึกของเกมและทำให้ดูดี

45
00:03:28,190 --> 00:03:32,870
‫ดังนั้น ในระหว่างขั้นตอนการออกแบบของคุณ คุณอาจตระหนักดีว่า จริงๆ แล้วเราต้องการแอนิเมชั่นที่ทำงานเร็วขึ้น

46
00:03:32,870 --> 00:03:39,260
‫ไม่เป็นไร แต่คุณต้องการเปลี่ยนเกมก่อนเพื่อไปถึงที่นั่น แทนที่จะต้องไปและลองบันทึกแอนิเมชั่นการวิ่งแบบอื่น

47
00:03:39,290 --> 00:03:48,250
‫หรือหาแอนิเมชั่นการวิ่งแบบอื่นแล้วพบว่าจริงๆ แล้วนั่นไม่ได้ทำให้ความรู้สึกของเกมดีขึ้น

48
00:03:48,270 --> 00:03:51,320
‫นั่นเป็นเหตุผลที่ฉันต้องการแยกสองสิ่งนี้ออกจากกันมากที่สุด

49
00:03:51,350 --> 00:03:57,320
‫มีบางครั้งที่สิ่งต่าง ๆ ต้องสอดคล้องกับแอนิเมชั่น แต่นี่ไม่ใช่หนึ่งในนั้น

50
00:03:57,320 --> 00:03:59,990
‫ดังนั้นจึงมีข้อยกเว้นสำหรับกฎทุกข้อ

51
00:03:59,990 --> 00:04:04,040
‫ดังนั้นอย่าถือเอาสิ่งนี้เป็นกฎเกณฑ์หินอย่างสมบูรณ์

52
00:04:04,040 --> 00:04:09,830
‫คุณจะเห็นตัวอย่างเกมที่ขับเคลื่อนคุณสมบัติบางอย่างจากแอนิเมชันอย่างแน่นอน แต่โดยทั่วไปแล้ว

53
00:04:09,830 --> 00:04:12,170
‫เราต้องการทำในทางกลับกัน

54
00:04:12,170 --> 00:04:16,010
‫เราอยากจะบอกว่าตัวละครในเกมมีความเร็วเท่าไหร่?

55
00:04:16,010 --> 00:04:21,230
‫ให้ฉันไปอัปเดตความเร็วของแอนิเมชั่นแทนที่จะพูดว่า แอนิเมชั่นความเร็วเท่าไหร่?

56
00:04:21,230 --> 00:04:23,240
‫ให้ฉันอัปเดตความเร็วของตัวละครในเกม

57
00:04:23,270 --> 00:04:23,510
‫ตกลง.

58
00:04:23,510 --> 00:04:26,090
‫ด้วยที่กล่าวว่าเราจะทำเช่นนี้ได้อย่างไร

59
00:04:26,090 --> 00:04:32,360
‫โดยพื้นฐานแล้วกลไกของมันคือพิมพ์เขียวนี้ พิมพ์เขียวแอนิเมชั่นนี้มีกราฟเหตุการณ์เหมือนกับพิมพ์เขียวอื่น

60
00:04:32,360 --> 00:04:38,330
‫ๆ ซึ่งหมายความว่ามันสามารถมีสิ่งต่าง ๆ เช่นเหตุการณ์ TIC

61
00:04:38,330 --> 00:04:46,100
‫ถ้าฉันเข้าไปที่กราฟเหตุการณ์และลองดู เรามีโหนดเหตุการณ์สองสามโหนดในนี้ซึ่งเราสามารถใช้เพื่อเริ่มต้นได้

62
00:04:46,100 --> 00:04:48,740
‫เรามีแอนิเมชั่นอัปเดตพิมพ์เขียวนี้

63
00:04:48,740 --> 00:04:59,840
‫หากเราออกจากสิ่งนี้ทุกครั้งที่ต้องการอัปเดตแอนิเมชั่น มันจะให้โหนดการดำเนินการแก่เราและอนุญาตให้เราดำเนินการต่อและรับสถานะบางอย่าง

64
00:04:59,840 --> 00:05:05,000
‫ทุกครั้งที่เราเรียกสิ่งนี้ สิ่งที่เราจะทำคือทุกครั้งที่เราเรียก เราจะไปคว้าสถานะบางอย่าง

65
00:05:05,000 --> 00:05:10,940
‫และสังเกตว่ามีเจ้าของที่วางไข่ที่บอกว่าไปข้างหน้าและรับวัตถุจำนำ

66
00:05:10,940 --> 00:05:16,430
‫ดังนั้น ให้เราเตือนตัวเองว่า -- ในกรณีนี้คือตัวละคร ตัวละครที่เป็นคลาสย่อยของ --

67
00:05:16,430 --> 00:05:19,130
‫และมันจะเป็นตัวละครที่ส่งเสียงบี๊บ

68
00:05:19,130 --> 00:05:20,780
‫ทำไมมันถึงเป็นตัวละครที่ยิงบี๊บ?

69
00:05:20,780 --> 00:05:21,500
‫มาดูกันเลย

70
00:05:22,730 --> 00:05:27,320
‫เพราะตัวละครนี้ถ้าเราเลือกเมชให้ไปที่วิวพอร์ต

71
00:05:27,860 --> 00:05:33,350
‫ขณะนี้มันทำงานแค่แอนิเมชั่นธรรมดาๆ แต่สิ่งที่เราต้องการจะทำคือเปลี่ยนโหมดแอนิเมชั่นไปใช้พิมพ์เขียวแอนิเมชั่น

72
00:05:33,350 --> 00:05:39,380
‫และเราต้องการใช้ตัวละครในเกมยิงแอปนั้น

73
00:05:39,380 --> 00:05:42,530
‫นั่นคือเหตุผลที่นี่คือ -- เจ้าของ

74
00:05:42,530 --> 00:05:44,810
‫มันใช้พิมพ์เขียวแอนิเมชั่นนั้น

75
00:05:44,810 --> 00:05:47,840
‫ตอนนี้พิมพ์เขียวมีเจ้าของโรงรับจำนำแล้ว

76
00:05:48,290 --> 00:05:57,020
‫ดังนั้นสิ่งที่เราต้องการจะทำในฟังก์ชันการอัพเดทนี้ สรุปก็คือ เราต้องการดึงข้อมูลจากตัวจำนำเกี่ยวกับการเคลื่อนที่ของมัน

77
00:05:57,020 --> 00:05:59,030
‫เราอยากจะบอกว่าความเร็วของคุณคืออะไร?

78
00:05:59,030 --> 00:06:01,640
‫มุมของการเคลื่อนไหวของคุณคืออะไร?

79
00:06:01,970 --> 00:06:03,890
‫นั่นคือสิ่งที่เราจะคำนวณในการบรรยายนี้

80
00:06:03,890 --> 00:06:06,680
‫เรากำลังจะทำความเร็วเพราะมันง่ายที่สุดที่จะทำ

81
00:06:06,710 --> 00:06:13,430
‫มุมจะต้องมีการจัดการเล็กน้อยกับการแปลงซึ่งเราจะดูในการบรรยายครั้งต่อไป

82
00:06:13,430 --> 00:06:23,000
‫โหนดที่เราอยากได้ตรงนี้ คือ ได้ความเร็วของเจ้าของโรงรับจำนำ ที่ให้เวกเตอร์นี่กับเราตรงนี้

83
00:06:23,390 --> 00:06:33,290
‫แล้วจากด้านหลังของเวกเตอร์นั้น, เราต้องการหาขนาดหรือความยาวของมัน เพื่อที่เราจะลากออกจากการค้นหาเวกเตอร์นั้นเพื่อหาขนาดได้

84
00:06:33,290 --> 00:06:38,450
‫และสังเกตว่ามันฉลาดมาก และฉันได้ค้นหาขนาดแล้ว แต่มันให้ฟังก์ชันที่เรียกว่าความยาวเวกเตอร์

85
00:06:38,450 --> 00:06:42,470
‫ขนาดชัดเจนมากที่พวกเขาโอเวอร์คล็อกว่าเป็นคำพ้องความหมายสำหรับความยาวเวกเตอร์

86
00:06:42,470 --> 00:06:45,260
‫ทำไมเราต้องการได้ความยาวเวกเตอร์มากกว่าเวกเตอร์เอง?

87
00:06:45,260 --> 00:06:50,810
‫เพราะเรากำลังมองหาทุ่น ซึ่งเป็นเวกเตอร์ความเร็ว รวมถึงทิศทางและความเร็ว

88
00:06:50,810 --> 00:06:53,570
‫ซึ่งเราจะต้องคำนวณมุม

89
00:06:53,600 --> 00:06:57,080
‫แต่มันไม่ใช่สิ่งที่เราจำเป็นต้องคำนวณความเร็ว

90
00:06:57,080 --> 00:06:59,060
‫ความท้าทายเล็ก ๆ น้อย ๆ สำหรับคุณที่นี่

91
00:06:59,090 --> 00:06:59,750
‫ไปข้างหน้า

92
00:06:59,750 --> 00:07:02,510
‫ไม่มีการท้าทายอื่นใดในการบรรยายนี้

93
00:07:02,540 --> 00:07:06,920
‫ไปข้างหน้าและตั้งค่าความเร็วโดยใช้ความยาวเวกเตอร์นี้

94
00:07:06,920 --> 00:07:09,020
‫และจำไว้ว่าหากคุณต้องการพินการดำเนินการใดๆ

95
00:07:09,020 --> 00:07:11,750
‫เรากำลังพยายามทำสิ่งนี้กับแอนิเมชั่นการอัพเดทพิมพ์เขียว

96
00:07:11,750 --> 00:07:12,830
‫หยุดวิดีโอชั่วคราวแล้วไปกันเลย

97
00:07:12,860 --> 00:07:13,520
‫โอเค ยินดีต้อนรับกลับ

98
00:07:13,520 --> 00:07:16,160
‫ดังนั้นความเร็วคือสิ่งที่เราต้องการตั้งค่า

99
00:07:16,160 --> 00:07:22,100
‫ถ้าฉันลากมันเข้าไปในพิมพ์เขียวและกดความเร็วที่ตั้งไว้ คุณจะเห็นว่าเรามีพินการดำเนินการที่เราต้องการ

100
00:07:22,100 --> 00:07:32,060
‫เราจะได้สิ่งนั้นจากแอนิเมชั่น Blueprint Update และเราต้องการ data pin ซึ่งจะเป็นความเร็วที่มาจากความยาวเวกเตอร์เพื่อให้ได้ความเร็ว

101
00:07:32,240 --> 00:07:35,060
‫ดังนั้นมันควรจะสามารถดำเนินการต่อและบันทึกและรวบรวมสิ่งนั้นได้

102
00:07:35,060 --> 00:07:42,080
‫คุณจะเห็นว่ามันรีเซ็ตความเร็วเป็นศูนย์เพราะตอนนี้กำลังพยายามตั้งค่าจากเจ้าของโรงรับจำนำที่ไม่ได้อยู่ที่นั่นจริงๆ

103
00:07:42,740 --> 00:07:49,160
‫ดังนั้นสิ่งที่เราต้องการจะทำคือ ไปเล่นในโลกนี้จริง ๆ และดูว่าเรามีอะไรบ้าง

104
00:07:49,400 --> 00:07:50,420
‫โอเค แบบนี้ดีกว่ามาก

105
00:07:50,420 --> 00:07:58,700
‫เรามีตัวจำนำที่ยังคงนิ่งอยู่บนพื้น ยกเว้นตอนที่ฉันเคลื่อนที่ ซึ่งจุดนั้นทำให้ฉันมีความเร็วบ้าง

106
00:07:59,270 --> 00:08:07,580
‫และถ้าคุณใช้อินพุตแบบอะนาล็อก เช่น คอนโทรลเลอร์ คุณจะเห็นได้โดยการเปลี่ยนอินพุตแบบอะนาล็อกที่เปลี่ยนความเร็ว

107
00:08:07,580 --> 00:08:12,590
‫เราสามารถเปลี่ยนความเร็วของผู้ชายคนนี้ได้

108
00:08:14,580 --> 00:08:16,460
‫เห็นได้ชัดว่ามีสองปัญหาที่นี่

109
00:08:16,470 --> 00:08:21,060
‫อย่างแรกคือถ้าผมเคลื่อนออกจากมุม มันก็แค่ใช้ความเร็วสัมบูรณ์

110
00:08:21,060 --> 00:08:23,970
‫จึงไม่ปรับมุมนั้นในพื้นที่ผสมผสานของเรา

111
00:08:23,970 --> 00:08:25,830
‫ดังนั้นภาพเคลื่อนไหวจึงดูผิด

112
00:08:26,220 --> 00:08:34,650
‫ปัญหาอีกประการหนึ่งคือ เรากำลังก้าวไปข้างหน้าอย่างแน่นอน เนื่องจากความเร็วของอนิเมชั่นของเราไม่ตรงกับความเร็วของตัวละครในเกมของเรา

113
00:08:34,680 --> 00:08:39,150
‫นั่นคือสิ่งที่เราจะดูการแก้ไขในการบรรยายต่อไปเช่นกัน

114
00:08:39,330 --> 00:08:40,070
‫สิ่งที่ดี

115
00:08:40,080 --> 00:08:47,520
‫หวังว่าตอนนี้คุณคงเข้าใจแล้วว่าแอนิเมชั่นควรเชื่อมต่อกับการเล่นเกมโดยใช้พิมพ์เขียวแอนิเมชั่นอย่างไร

116
00:08:47,520 --> 00:08:51,920
‫และคุณควรจะสามารถนำไปใช้กับเกมของคุณเองได้

117
00:08:51,930 --> 00:08:58,920
‫พบกันในการบรรยายครั้งต่อไปที่เราจะเชื่อมโยงมุมเหล่านั้นเพื่อให้การเคลื่อนไหวนี้ดูเป็นธรรมชาติขึ้นเล็กน้อย

