﻿1
00:00:04,480 --> 00:00:05,260
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,260 --> 00:00:09,820
‫ในการบรรยายนี้ เราจะมาแนะนำสิ่งใหม่ในแผนผังพฤติกรรม บริการ

3
00:00:09,820 --> 00:00:14,560
‫เราจะค้นหาว่าบริการคืออะไร บริการเหล่านี้ช่วยให้เราทำงานอย่างต่อเนื่องได้อย่างไร และเราจะเขียนบริการของเราเองใน

4
00:00:14,560 --> 00:00:16,390
‫C++ ได้อย่างไร

5
00:00:16,390 --> 00:00:17,380
‫มาดำดิ่งกันเลย

6
00:00:18,060 --> 00:00:23,940
‫ขณะนี้มีตรรกะเพียงไม่กี่ชิ้นที่เหลืออยู่ในตัวควบคุม AI ของเราที่ไม่ได้อยู่ในแผนผังพฤติกรรมของเรา

7
00:00:24,000 --> 00:00:27,000
‫หนึ่งในนั้นคือการตั้งค่าตำแหน่งเริ่มต้น

8
00:00:27,000 --> 00:00:30,120
‫ฉันยังต้องการตั้งค่าที่นี่จากตัวควบคุม I

9
00:00:30,510 --> 00:00:36,210
‫แต่สิ่งที่ชอบติ๊กตอนนี้ที่ฉันต้องการจะทำจากภายในต้นไม้พฤติกรรมของเรา

10
00:00:36,390 --> 00:00:38,100
‫ฉันมาทำอะไรที่นี่?

11
00:00:38,190 --> 00:00:40,020
‫ฉันจะได้รับมันจะทำอย่างไร?

12
00:00:40,410 --> 00:00:45,750
‫ตั้งค่าตำแหน่งผู้เล่นของเราเพื่ออัปเดตตำแหน่งผู้เล่นที่รู้จักล่าสุด

13
00:00:46,200 --> 00:00:51,540
‫ทั้งสองสิ่งนี้เราสามารถทำอะไรได้บ้างที่เรียกว่าบริการพิมพ์เขียว

14
00:00:51,540 --> 00:00:56,030
‫ลองไปที่พิมพ์เขียวของเราและดูว่าเกิดอะไรขึ้น

15
00:00:56,040 --> 00:01:03,870
‫ดังนั้น ถ้าฉันไปที่ AI ของฉันและเปิดแผนผังพฤติกรรม เชื่อมต่อเข้ากับหน้าต่างหลัก ฉันต้องแสดงให้คุณเห็นว่าบริการคืออะไร

16
00:01:03,870 --> 00:01:10,770
‫เราไม่เคยใช้มาก่อน และโดยพื้นฐานแล้วมันคือวิธีการเรียกใช้บางสิ่งทุกๆ ขีดหรือทุกๆ

17
00:01:10,770 --> 00:01:14,790
‫ครั้งเมื่อใดก็ตามที่เส้นทางนั้นทำงานอยู่

18
00:01:14,790 --> 00:01:22,380
‫ดังนั้นถ้าฉันมีบริการเกี่ยวกับพฤติกรรม Chase แล้วโค้ดบางอย่างจะสามารถทำงานตลอดเวลาที่พฤติกรรม

19
00:01:22,650 --> 00:01:26,880
‫Chase ทำงานอยู่ ไม่ว่าเราจะเคลื่อนที่ ยิง ชั่งน้ำหนักสิ่งเหล่านี้ก็ตาม

20
00:01:26,880 --> 00:01:28,800
‫วิ่ง.

21
00:01:28,800 --> 00:01:31,200
‫แต่ถ้าเราอยู่ในการสอบสวนมันจะไม่เป็นเช่นนั้น

22
00:01:31,410 --> 00:01:35,740
‫นี่คือสถานการณ์ที่เราต้องการใช้บริการ

23
00:01:35,760 --> 00:01:38,070
‫ตอนนี้ขอมีบริการตัวอย่าง

24
00:01:38,070 --> 00:01:44,670
‫สิ่งหนึ่งที่เราสังเกตเห็นเมื่อเรากำลังเล่นคือเมื่อ AI เข้ามาอยู่ในระยะของเราและเราเคลื่อนที่ไปรอบ

25
00:01:44,670 --> 00:01:51,480
‫ๆ เขาไม่หมุนมามองเราและเราสามารถแก้ไขได้ด้วยบริการที่มีอยู่แล้วที่นี่

26
00:01:51,480 --> 00:01:58,680
‫ดังนั้นหากเราคลิกขวาที่โหนดนี้แล้วไปที่เพิ่มบริการและค้นหาบริการโฟกัสเริ่มต้น คุณจะเห็นว่ามันเป็นสีอื่น

27
00:01:58,680 --> 00:02:00,210
‫มันคือสีเขียว

28
00:02:00,390 --> 00:02:05,370
‫และถ้าเราเลือกบริการเริ่มต้นนั้น มันจะไปอยู่ใต้โหนดลำดับเหล่านี้ด้วย ซึ่งตรงข้ามกับโหนดด้านบน

29
00:02:05,370 --> 00:02:06,870
‫ซึ่งเป็นสิ่งที่นักตกแต่งทำ

30
00:02:07,350 --> 00:02:11,940
‫ดังนั้นเมื่อเลือกโฟกัสเริ่มต้น คุณจะสามารถเลือกสิ่งที่คุณต้องการโฟกัสได้

31
00:02:11,940 --> 00:02:17,460
‫และในกรณีนี้ เราต้องการเน้นที่ตำแหน่งของผู้เล่น กดบันทึก และกดเล่น

32
00:02:17,460 --> 00:02:23,370
‫และตอนนี้ถ้าเราไปดูและย้ายไปรอบๆ คุณจะเห็นว่าเขาหมุนตามเรา

33
00:02:23,790 --> 00:02:24,840
‫สิ่งที่เย็น.

34
00:02:24,930 --> 00:02:38,940
‫ตอนนี้เราต้องการใช้บริการที่คล้ายกันใน C ++ ซึ่งจะอัปเดตตำแหน่งผู้เล่นของเราตลอดเวลาและอัปเดตตำแหน่งผู้เล่นที่รู้จักล่าสุดของเราในขณะที่เรากำลังไล่ล่า

35
00:02:38,940 --> 00:02:45,000
‫ดังนั้นเราจะทำเป็นสองบริการแยกกัน และคุณจะเห็นได้ว่าบริการอัตโนมัตินั้นสามารถทำให้สิ่งต่าง

36
00:02:45,000 --> 00:02:51,090
‫ๆ มีประสิทธิภาพมากกว่าการทำเครื่องหมายเล็กน้อยได้อย่างไร เพราะคุณสามารถเรียกใช้ตำแหน่งผู้เล่นที่รู้จักล่าสุดเมื่อคุณอยู่ใน

37
00:02:51,090 --> 00:02:54,870
‫ส่วนขวาของแผนผังพฤติกรรม

38
00:02:54,870 --> 00:03:02,880
‫ไปที่แซนด์บ็อกซ์ ไปที่เนื้อหาเบราว์เซอร์ เพิ่มคลาส C++ ใหม่ จะแสดงคลาสทั้งหมด และค้นหาตัวเลือกของเราที่นี่

39
00:03:03,000 --> 00:03:11,370
‫เรากำลังมองหาบริการ BT และมีตัวเลือกสองทาง เช่นเดียวกับงาน BT ของเรา เรามีฐาน Blackboard และเราต้องการฐาน

40
00:03:11,490 --> 00:03:18,180
‫Blackboard เพราะเราต้องการทราบว่าคีย์ใดที่เรา ควรจะปรับปรุง

41
00:03:18,180 --> 00:03:20,640
‫ตัวอย่างเช่น ควรเป็นตำแหน่งของผู้เล่นหรือไม่?

42
00:03:20,640 --> 00:03:23,190
‫ควรเป็นตำแหน่งผู้เล่นที่รู้จักล่าสุดหรือไม่

43
00:03:23,310 --> 00:03:28,830
‫ดังนั้นเราจะไปต่อในรายการนี้โดยเลือก Blackboard Base และเราจะเรียกใช้บริการ

44
00:03:28,830 --> 00:03:36,540
‫BT นี้ ขีดเส้นใต้ตำแหน่งของผู้เล่นเช่นนั้น และสร้างคลาสนั้นต่อไป

45
00:03:36,660 --> 00:03:42,870
‫เมื่อเราคอมไพล์เสร็จแล้ว เราจะไปที่โค้ดของ Visual Studio และคุณจะเห็นว่าเราได้ตำแหน่งโปรแกรมเล่นบริการ

46
00:03:42,870 --> 00:03:48,390
‫BT ซึ่งสืบทอดมาจาก Service Blackboard Base Call

47
00:03:48,390 --> 00:03:49,110
‫นั่นคือสิ่งที่เราต้องการ

48
00:03:49,110 --> 00:03:51,870
‫ตอนนี้เราจะย้ายไปใช้ฟังก์ชันอะไร?

49
00:03:52,050 --> 00:04:01,650
‫ฉันจะลองย้ายฟังก์ชันที่ง่ายที่สุดเท่าที่จะทำได้ ซึ่งก็แค่ตั้งค่าตำแหน่งผู้เล่นที่รู้จักล่าสุดโดยพื้นฐานแล้ว

50
00:04:01,650 --> 00:04:08,340
‫แม้ว่าคีย์นี้จะได้รับการกำหนดค่าในแผนผังลักษณะการทำงาน ไม่ใช่ที่นี่ในข้อความธรรมดา

51
00:04:08,340 --> 00:04:12,390
‫แต่จะรับตำแหน่งผู้เล่นและตั้งค่าเป็นคีย์กระดานดำ

52
00:04:12,390 --> 00:04:17,640
‫และจะไม่ทำให้เกิดการตรวจสอบด้วยสายตาเพราะถ้าเราใช้มันในแผนผังพฤติกรรมของเราเฉพาะเมื่อเราไล่ตาม

53
00:04:17,640 --> 00:04:21,930
‫เราก็ไม่จำเป็นต้องตรวจแนวสายตา

54
00:04:21,930 --> 00:04:25,470
‫เราสามารถเห็นผู้เล่นที่โดยอัตโนมัติเรารู้ว่าเป็นกรณี

55
00:04:25,470 --> 00:04:29,010
‫ดังนั้นการทำให้เข้าใจง่ายขึ้นอีกประการหนึ่งสำหรับการทำในบริการ

56
00:04:29,520 --> 00:04:36,840
‫ดังนั้นสิ่งนี้ควรจะตรงไปตรงมาถ้าเรารู้วิธีรับเมธอดที่นี่ในบริการ BT

57
00:04:37,230 --> 00:04:41,940
‫ลองไปดูที่บริการ BT ของเราเพื่อดูว่ามีอะไรบ้าง

58
00:04:41,940 --> 00:04:44,100
‫เอกสารอะไรครับ ทำอะไรได้บ้าง?

59
00:04:44,130 --> 00:04:51,120
‫วิธีการหลักที่นี่คุณสามารถเห็นได้ว่ามีความเกี่ยวข้องกับ C ที่เกี่ยวข้องกับโหนดติ๊กและเมื่อเริ่มต้นการค้นหา

60
00:04:51,150 --> 00:04:52,020
‫ในการค้นหาเริ่มต้น

61
00:04:52,020 --> 00:04:54,240
‫เราไม่สนใจเป็นพิเศษ แต่ติ๊กโหนด

62
00:04:54,240 --> 00:05:00,870
‫ใช่ นั่นคือที่ที่เราจะได้รับการอัปเดตตลอดเวลาว่าบริการนี้อยู่บนเส้นทางที่ใช้งานอยู่

63
00:05:01,110 --> 00:05:02,970
‫นั่นคือเวลาที่เราต้องการนำไปใช้

64
00:05:02,980 --> 00:05:06,180
‫เราไปค้นหาไฟล์นี้เพื่อค้นหาลายเซ็นแบบเต็มที่นี่

65
00:05:06,390 --> 00:05:08,010
‫เราจะเห็นว่าที่นี่

66
00:05:08,010 --> 00:05:09,270
‫มาดูกันว่าอยู่ในภาคไหน?

67
00:05:09,270 --> 00:05:10,770
‫มันอยู่ภายใต้ส่วนที่ได้รับการคุ้มครอง

68
00:05:10,770 --> 00:05:16,890
‫ดังนั้นเราจะไปที่บริการ BT ของเราที่เราได้สร้างและสร้างส่วนที่มีการป้องกัน

69
00:05:17,530 --> 00:05:27,660
‫และวางลงใน จะเป็นการลบล้างที่นี่โดยอัตโนมัติ เนื่องจาก BT Service สืบทอดมันเองจากคลาสพาเรนต์ แต่การแทนที่ด้วยตัวเราเองอีกครั้งก็ไม่เสียหาย

70
00:05:27,670 --> 00:05:32,920
‫เราสามารถทำ control shift P เพื่อสร้างการนำไปปฏิบัติ จากนั้นเราต้องการเรียกใช้ super

71
00:05:32,920 --> 00:05:39,550
‫ดังนั้นเราจึงต้องการ super tick node และเราต้องการส่งผ่านในคอมพ์ของเราเองและหน่วยความจำของโหนดของเรา

72
00:05:39,550 --> 00:05:41,500
‫ลองดูว่ามีอย่างอื่นในนี้

73
00:05:41,500 --> 00:05:49,960
‫เรามีเดลต้าวินาทีเช่นเดียวกับสิ่งที่เราต้องผ่านเช่นกัน และสุดท้ายจบด้วยเซมิโคลอนควรจบการใช้งานโหนดติ๊กของเรา

74
00:05:49,960 --> 00:05:59,590
‫ในที่นี้โดยพื้นฐานแล้วเราต้องการทำพฤติกรรมนั้นจาก I controller CP ซึ่งเป็นที่ที่เราได้รับส่วนประกอบกระดานดำจากนั้นตั้งค่าเป็นเวกเตอร์

75
00:05:59,590 --> 00:06:04,120
‫เรารู้วิธีรับส่วนประกอบกระดานดำจากการอ้างอิงส่วนประกอบเจ้าของ

76
00:06:04,120 --> 00:06:05,410
‫นั่นค่อนข้างตรงไปตรงมา

77
00:06:05,410 --> 00:06:11,590
‫เราแค่จะทำ Owner comp dot จากนั้นเราจะทำ get blackboard component โดยจำได้ว่าเราจำเป็นต้อง

78
00:06:11,590 --> 00:06:17,980
‫hash รวมไว้ที่นี่สำหรับองค์ประกอบ behavior tree forward slash blackboard

79
00:06:17,980 --> 00:06:20,410
‫จากนั้นเราสามารถใช้ตัวดำเนินการลูกศรของเราได้

80
00:06:20,500 --> 00:06:27,370
‫และสิ่งที่เราควรทำตรงนี้คือตั้งค่าเป็นเวกเตอร์ แล้วเราต้องการคีย์

81
00:06:27,370 --> 00:06:30,490
‫เรารู้วิธีจัดการกับสิ่งนี้ แต่มาทบทวนความจำของเรากันเถอะ

82
00:06:30,490 --> 00:06:38,380
‫ถ้าเราไปที่บริการ BT ของเราที่ขีดเส้นใต้ Blackboard Base คุณจะเห็นได้ว่าเหมือนกับงาน เรามีคีย์กระดานดำที่เลือกไว้

83
00:06:38,380 --> 00:06:39,310
‫นั่นคือสิ่งที่เราจะใช้

84
00:06:39,340 --> 00:06:45,940
‫รับคีย์ Blackboard ที่เลือก รับคีย์ที่ถูกเลือกในแผนผังพฤติกรรม จากนั้นเราต้องการค่าเวกเตอร์ของเรา

85
00:06:45,940 --> 00:06:46,840
‫เราจะไปเอามาจากไหน?

86
00:06:46,840 --> 00:06:48,580
‫เราจะเหมือนกันทุกประการกับตัวควบคุม AI

87
00:06:48,580 --> 00:06:52,960
‫เรากำลังจะได้รับผู้เล่น -- อันดับแรกและสำคัญที่สุดที่นี่ที่ด้านบน

88
00:06:52,960 --> 00:06:57,880
‫จากนั้นเราต้องตรวจสอบว่านี่เป็นโมฆะหรือไม่และเราจำเป็นต้องรวมสถิติการเล่นเกมของเราด้วย

89
00:06:57,880 --> 00:07:06,130
‫ตรวจสอบให้แน่ใจว่าเรามีสถิติการเล่นเกมรวมจากคอนโทรลเลอร์ CP ที่รวมอยู่ในตำแหน่งผู้เล่นบริการผู้เล่นของเรา

90
00:07:06,790 --> 00:07:13,750
‫จากนั้นเราจะทำ และถ้าจำนำผู้เล่นมีค่าเท่ากับตัวชี้ null สิ่งที่เราจะทำคือกลับมาที่นี่อีกครั้งก่อนกำหนด

91
00:07:13,750 --> 00:07:20,080
‫มันจะคืนค่าเป็นโมฆะ เพื่อให้เราสามารถกลับมาก่อนกำหนดได้อย่างรวดเร็ว

92
00:07:20,140 --> 00:07:30,070
‫จากนั้นเราสามารถใช้ตัวแสดงแทนผู้เล่นของเราที่นี่เพื่อรับตำแหน่งนักแสดงและเราอาจจำเป็นต้องรวมที่นี่

93
00:07:30,070 --> 00:07:30,970
‫เราจะดูว่าเราจะไปอย่างไร

94
00:07:30,970 --> 00:07:34,420
‫มันไม่เจ็บที่จะปลอดภัย ทำมัน และชัดเจนเกี่ยวกับสิ่งเหล่านี้

95
00:07:34,420 --> 00:07:38,890
‫ดังนั้นเราจะทำการรวมสำหรับเฟรมเวิร์กเกมแล้วฟอร์เวิร์ดสแลช

96
00:07:38,890 --> 00:07:46,090
‫มันจะถูกจำนำบน H เพื่อให้เราแน่ใจว่าเรามีทุกอย่างตามลำดับตรงนี้ แล้วเราก็ตั้งค่าเป็นเวกเตอร์

97
00:07:46,090 --> 00:07:47,350
‫นั่นควรเป็นสิ่งที่เราต้องการ

98
00:07:47,350 --> 00:07:49,210
‫ลองไปรวบรวมและดูว่าใช้งานได้หรือไม่

99
00:07:49,210 --> 00:07:50,350
‫อันที่จริงอีกสิ่งหนึ่ง

100
00:07:50,350 --> 00:07:54,700
‫เราอาจต้องการชื่อที่สวยงาม ดังนั้นเราจึงควรมีคอนสตรัคเตอร์ที่นี่

101
00:07:54,700 --> 00:08:03,760
‫ฉันจะสร้างส่วนสาธารณะด้วยตัวสร้าง ซึ่งจะเป็นชื่อของคลาส จากนั้นเราจะสร้างการใช้งานนั้นต่อไป

102
00:08:03,760 --> 00:08:08,590
‫ฉันจะนำการใช้งานของฉันไปใช้งานเหนือการใช้งานสำหรับโหนดติ๊ก

103
00:08:08,590 --> 00:08:17,680
‫จากนั้นเราจะตั้งชื่อโหนดให้เท่ากับที่ควรอัปเดตตำแหน่งของผู้เล่น แล้วมาสร้างและดูว่าใช้งานได้หรือไม่

104
00:08:17,710 --> 00:08:19,300
‫ดูเหมือนว่าฉันมีอัฒภาคหายไป

105
00:08:19,300 --> 00:08:20,170
‫ลองอีกครั้ง

106
00:08:20,170 --> 00:08:23,350
‫เมื่อรวบรวมสำเร็จแล้ว เราก็สามารถข้ามไปยังศัตรูของเราได้

107
00:08:23,350 --> 00:08:29,350
‫ฉันและเช่นเดียวกับจุดโฟกัสของการตั้งค่า ต้องการเพิ่มบริการใหม่ที่เราได้แสดงไว้ที่นี่ในฐานะตำแหน่งของผู้เล่น

108
00:08:29,350 --> 00:08:34,600
‫ซึ่งโดยพื้นฐานแล้วชื่อที่สวยงามนั้นจะปรากฏเป็นตำแหน่งอัปเดตของผู้เล่น

109
00:08:34,600 --> 00:08:40,720
‫คุณจะเห็นว่ามันต้องการบอกความถี่ของการติ๊กทุกๆ 0 4 ถึง 0 6 วินาที

110
00:08:40,720 --> 00:08:43,990
‫ดีกว่าการใช้ติ๊กเพราะเรารู้ว่าติ๊กทำงานทุกเฟรมที่นี่

111
00:08:43,990 --> 00:08:46,660
‫นี้ทำงานน้อยลงซึ่งเป็นสิ่งที่ดี

112
00:08:46,660 --> 00:08:52,450
‫และเราสามารถเข้าไปดูรายละเอียดและสร้างคีย์กระดานดำ เลื่อนลงมา แล้วเลือกว่าเราต้องการอัพเดทไม่ใช่แค่ตำแหน่งผู้เล่นแต่เป็นตำแหน่งผู้เล่นที่รู้จักล่าสุด

113
00:08:52,450 --> 00:09:02,800
‫เพราะนั่นจะเกิดขึ้นทุกเฟรมตราบใดที่เราไล่ตาม คือพฤติกรรมที่เราต้องการ

114
00:09:02,800 --> 00:09:11,230
‫โหนดบริการอีกหนึ่งโหนดที่เราอยากจะสร้างต่อไปคือพฤติกรรมของตัวควบคุม AI เพื่อลงไปติ๊กและดูว่ามีอะไรเหลืออยู่

115
00:09:11,230 --> 00:09:17,530
‫สำหรับเราที่จะทำที่นี่คือการอัปเดตตำแหน่งผู้เล่นโดยมีเงื่อนไขว่าเรามีแนวสายตาหรือไม่

116
00:09:17,530 --> 00:09:19,390
‫ดังนั้นเราจึงต้องการให้อัปเดตตำแหน่งผู้เล่น

117
00:09:19,390 --> 00:09:22,450
‫ถ้าเรามีแนวสายตา ให้เคลียร์ตำแหน่งถ้าไม่มี

118
00:09:22,450 --> 00:09:25,750
‫นั่นจะเป็นโหนดบริการใหม่เพราะมันมีพฤติกรรมที่แตกต่างออกไปเล็กน้อย

119
00:09:25,780 --> 00:09:28,270
‫เราจะเพิ่มคลาส C ++ ใหม่

120
00:09:28,270 --> 00:09:33,220
‫เราจะไปแสดงคลาสทั้งหมด และอีกครั้ง เราจะให้บริการ BT ขีดเส้นใต้ฐานกระดานดำ

121
00:09:33,220 --> 00:09:39,910
‫คลาสพื้นฐานของเรา และเราจะเรียกมันว่า ขีดล่างของการบริการ

122
00:09:40,590 --> 00:09:44,010
‫ตำแหน่งของผู้เล่นหากเห็น

123
00:09:44,130 --> 00:09:46,980
‫และไปข้างหน้าและสร้างชั้นเรียนนั้น

124
00:09:46,980 --> 00:09:51,930
‫และเนื่องจากนี่คือสิ่งที่คุณเคยเห็นเป็นส่วนใหญ่ จึงเป็นความท้าทายในการใช้บริการนี้

125
00:09:51,930 --> 00:09:57,570
‫ดังนั้นคุณจะติดตั้ง tic node โดยใช้โค้ดในตัวควบคุม AI

126
00:09:57,570 --> 00:10:04,350
‫คุณจะต้องใช้ตัวชี้ตัวควบคุม AI จากภายในบริการ BT ตามคำแนะนำของคุณ

127
00:10:04,350 --> 00:10:09,810
‫ตอนนี้ก็เหมือนกับที่เราทำในงาน BT ดังนั้นให้ใช้สิ่งนั้นเป็นแนวทางในการรับตัวชี้ตัวควบคุม

128
00:10:09,810 --> 00:10:11,340
‫AI นั้น

129
00:10:11,520 --> 00:10:15,270
‫คุณจะต้องใช้ตัวชี้ตัวควบคุม AI เพื่อตรวจสอบแนวสายตา

130
00:10:15,270 --> 00:10:21,630
‫โปรดจำไว้ว่า แนวสายตาเป็นวิธีการบนตัวควบคุม AI จากนั้นคุณต้องอัปเดตหรือล้างคีย์โดยขึ้นอยู่กับแนวการตรวจสอบของคุณ

131
00:10:21,660 --> 00:10:27,270
‫จากนั้นวางโหนดนี้ในแผนผังการทำงาน

132
00:10:27,270 --> 00:10:32,130
‫คุณคิดว่าจะอยู่ในระดับใดที่เหมาะสมของแผนผังพฤติกรรมสำหรับบริการนี้ในการทำงาน

133
00:10:32,130 --> 00:10:33,660
‫จะคิดยังไงกับเรื่องนั้น?

134
00:10:33,660 --> 00:10:37,110
‫มีรอยขีดข่วนเล็กน้อยที่คาง หยุดวิดีโอชั่วคราวแล้วเริ่มเลย

135
00:10:38,070 --> 00:10:38,310
‫ตกลง.

136
00:10:38,310 --> 00:10:38,870
‫ยินดีต้อนรับกลับ.

137
00:10:38,880 --> 00:10:44,670
‫นี่จึงเป็นการเปิดบริการด้านความงามใหม่ในโค้ด Visual Studio

138
00:10:44,670 --> 00:10:51,750
‫ตอนนี้มันค่อนข้างจะเหมือนกันในส่วนหัว ดังนั้นฉันจะดำเนินการต่อและคัดลอกไปที่ส่วนหัวที่สร้างขึ้นใหม่ของเรา

139
00:10:51,750 --> 00:11:00,300
‫ยกเว้นว่าเราจำเป็นต้องเปลี่ยนชื่อของตัวสร้างให้ตรงกัน

140
00:11:00,300 --> 00:11:07,650
‫ตอนนี้เรากำลังจะสร้างการใช้งานสำหรับ Constructor และตั้งชื่อโหนดเพื่ออัปเดตตำแหน่งของผู้เล่น

141
00:11:08,010 --> 00:11:12,690
‫หากเห็นและเพิ่มเครื่องหมายอัฒภาคต่อท้ายที่นี่

142
00:11:12,720 --> 00:11:14,400
‫อย่าลืมว่าครั้งนี้

143
00:11:14,400 --> 00:11:25,080
‫จากนั้นกลับไปที่ C ++ เพื่อใช้ขีดโหนดเช่นกันและฉันจะคัดลอกข้ามถ้าเราสามารถหาตำแหน่งของผู้เล่นได้

144
00:11:25,080 --> 00:11:32,610
‫CP และเพียงแค่จะคัดลอกข้ามการเรียกไปยัง super และการรับจำนำผู้เล่นและการตรวจสอบการส่งคืนค่าว่าง

145
00:11:32,610 --> 00:11:36,090
‫อันที่จริง ฉันจะคัดลอกเนื้อหาทั้งหมด และเราจะแก้ไขจากที่นั่น

146
00:11:36,600 --> 00:11:43,380
‫ดังนั้นการคัดลอกข้ามนั้นและเรากำลังจะคัดลอกการเข้าถึงส่วนประกอบกระดานดำด้วยการรวมสำหรับองค์ประกอบกระดานดำ

147
00:11:43,740 --> 00:11:50,160
‫สถิติการเล่นเกมและการจำนำ เพราะเราต้องการเข้าถึงสิ่งเหล่านี้ทั้งหมด

148
00:11:50,160 --> 00:11:53,130
‫อันที่จริง ฟังก์ชันการทำงานส่วนใหญ่มีการแบ่งปันกันที่นี่

149
00:11:53,130 --> 00:12:00,360
‫คุณสามารถคิดเกี่ยวกับการให้พวกเขาแบ่งปันรหัสนี้ แต่ฉันคิดว่าไม่มีความซ้ำซ้อนมากนักที่เราใส่ใจเพียงพอ

150
00:12:00,840 --> 00:12:05,430
‫สิ่งที่เราต้องทำที่นี่ก็คือ ตรวจสอบว่าเรามีตัวควบคุมการมองด้วยหรือไม่

151
00:12:05,430 --> 00:12:19,470
‫ดังนั้นฉันจะทำถ้าองค์ประกอบเจ้าของหรือเจ้าของ comp dot รับ I เจ้าของเท่ากับตัวชี้ค่า null แล้วเราจะต้องการดำเนินการต่อและกลับมาที่ขั้นตอนนี้

152
00:12:19,950 --> 00:12:24,360
‫จากนั้นสิ่งต่อไปที่เราจะต้องทำคือตรวจสอบการมองเห็นของเรา

153
00:12:24,360 --> 00:12:34,440
‫เราจะทำ if owner comp dot รับ I owner แล้วเราจะทำลูกศรตรงนี้ และเราจำเป็นต้องรวมคอนโทรลเลอร์ของเราไว้ที่นี่

154
00:12:34,440 --> 00:12:36,900
‫มันก็จะแฮชรวมอยู่ด้วย

155
00:12:38,120 --> 00:12:41,810
‫แล้วมันจะเป็น I controller H.

156
00:12:42,380 --> 00:12:48,470
‫แล้วเราอยากจะทำเส้นแล้วมาดูกันว่าการใช้งานที่ถูกต้องคืออะไรที่นี่

157
00:12:48,470 --> 00:12:54,650
‫ถ้าเราไปที่ I controller CP มันจะเป็นแนวที่สองที่เราต้องการ

158
00:12:54,650 --> 00:13:00,380
‫ดังนั้นแนวสายตาที่สองแล้วเราต้องทำแนวสายตาให้กับผู้เล่นจำนำ

159
00:13:00,380 --> 00:13:02,870
‫ในกรณีนี้ เรามีแนวสายตาในการจำนำผู้เล่นหรือไม่?

160
00:13:03,320 --> 00:13:04,820
‫นั่นคือสิ่งที่เรากำลังทำใน CP?

161
00:13:04,820 --> 00:13:05,810
‫ลองตรวจสอบอีกครั้งว่า

162
00:13:05,810 --> 00:13:06,680
‫ใช่.

163
00:13:07,220 --> 00:13:11,450
‫จากนั้นเราจะต้องการดำเนินการต่อและตั้งค่าให้แตกต่างออกไป

164
00:13:11,510 --> 00:13:15,800
‫ดังนั้นเราจึงตั้งค่าเวกเตอร์ให้จำนำผู้เล่นรับตำแหน่งนักแสดง

165
00:13:15,800 --> 00:13:18,620
‫ใช่ นั่นคือถ้าเรามีสายตาอย่างอื่น

166
00:13:18,620 --> 00:13:22,430
‫ถ้าเราไม่มีเส้นสายตา เรารู้ว่าเราต้องล้างค่านั้น

167
00:13:22,430 --> 00:13:26,030
‫ดังนั้นเราจะยังคงได้รับส่วนประกอบเจ้าของ รับส่วนประกอบกระดานดำ

168
00:13:26,060 --> 00:13:31,640
‫จากนั้นจะเป็นค่าที่ชัดเจน และเราจะล้างค่าของคีย์กระดานดำที่เลือกไว้

169
00:13:31,640 --> 00:13:37,790
‫และนั่นน่าจะครอบคลุมเรามากสำหรับการนำตำแหน่งของผู้เล่นไปใช้

170
00:13:37,790 --> 00:13:41,480
‫ถ้าเห็นก็ไปคอมไพล์กันดูว่าจะดีไหม

171
00:13:41,480 --> 00:13:42,710
‫การรวบรวมสำเร็จ

172
00:13:42,710 --> 00:13:44,570
‫เข้าเรื่องต้นไม้พฤติกรรมกันเถอะ

173
00:13:44,570 --> 00:13:50,420
‫ตอนนี้ ระดับที่ฉันต้องการให้ดำเนินการอยู่ที่ระดับบนสุดในตัวเลือกเริ่มต้น เพราะฉันต้องการให้อัปเดตตำแหน่งของผู้เล่นโดยทั่วไปตลอดเวลา

174
00:13:50,420 --> 00:13:59,600
‫เพราะเราต้องสามารถยกเลิกพฤติกรรมอื่นๆ เหล่านี้โดยอิงจาก ตำแหน่งผู้เล่นถูกตั้งค่า

175
00:13:59,600 --> 00:14:02,810
‫ดังนั้นเราต้องสามารถตั้งค่า unset ได้ตลอดเวลา

176
00:14:02,900 --> 00:14:08,870
‫ฉันจะไปและคลิกขวาที่ตัวเลือกระดับบนสุด เพิ่มบริการ เพิ่มตำแหน่งเล่นถ้าเห็น

177
00:14:09,200 --> 00:14:15,260
‫จากนั้นเราจะต้องเลือกโหนดบริการนั้นและเลือกคีย์กระดานดำซึ่งจะเป็นตำแหน่งผู้เล่นของเรา

178
00:14:15,710 --> 00:14:22,220
‫ดังนั้นชุดหนึ่งที่ตั้งอยู่ในตำแหน่งของผู้เล่น ตำแหน่งของผู้เล่นที่อัปเดต ยิ่งมีการอัปเดตตำแหน่งผู้เล่นที่รู้จักล่าสุด

179
00:14:22,550 --> 00:14:29,270
‫และตอนนี้เราควรสามารถลงไปที่ตัวควบคุม AI ของเราและลบรหัสนี้ทั้งหมดใน

180
00:14:29,270 --> 00:14:33,740
‫TTIC เพราะมันถูกแทนที่โดยบริการของเราแทน

181
00:14:33,740 --> 00:14:36,350
‫และเราสามารถดำเนินการรวบรวมและดูว่าได้ผลหรือไม่

182
00:14:36,350 --> 00:14:41,060
‫ไปหาบรรณาธิการและเล่นกันดูว่าเรายังมีศัตรูเข้ามาหาเราหรือไม่

183
00:14:41,060 --> 00:14:46,580
‫เขาวิ่งมาหาเรา มองไม่เห็น แล้วกลับมาหาเรา เริ่มยิง

184
00:14:46,580 --> 00:14:46,850
‫ใช่.

185
00:14:46,850 --> 00:14:53,000
‫โดยพื้นฐานแล้วทุกอย่างทำงานได้เหมือนที่เคยทำมา ยกเว้นตอนนี้มันทำทั้งหมดผ่านบริการที่เราเขียนขึ้นเองใน

186
00:14:53,000 --> 00:14:55,730
‫C++

187
00:14:55,760 --> 00:15:03,290
‫การบรรยายครั้งต่อไป เราจะแก้ไขข้อบกพร่องที่น่ารำคาญซึ่ง AI ยังคงยิงต่อไปและในที่สุดก็สามารถฆ่าตัวตายได้

188
00:15:03,290 --> 00:15:04,160
‫ฉันจะไปพบคุณที่นั่น.

