﻿1
00:00:04,260 --> 00:00:05,070
‫สวัสดีและยินดีต้อนรับ.

2
00:00:05,070 --> 00:00:08,490
‫ในการบรรยายนี้ เราจะมาทำงานเกี่ยวกับ AI Focus

3
00:00:08,490 --> 00:00:19,560
‫นั่นคือฟังก์ชันที่สร้างขึ้นใน Unreal ที่เราสามารถใช้เพื่อให้แน่ใจว่าตัวละคร AI ของเราติดตามเราทั่วโลกสามารถเล็งมาที่เราได้ไม่ว่าเราจะไปที่ไหน

4
00:00:19,560 --> 00:00:22,080
‫มาดูกันว่าโฟกัสทำงานอย่างไร

5
00:00:23,190 --> 00:00:26,220
‫ตอนนี้ฉันไม่ค่อยได้ทำอะไรมาก

6
00:00:26,220 --> 00:00:33,690
‫และฉันคิดว่าจุดเริ่มต้นแรกสำหรับการทำสิ่งใดๆ ก็คือให้หันกลับมาเผชิญหน้ากับผู้เล่นของเรา

7
00:00:33,990 --> 00:00:40,640
‫ในการทำสิ่งนี้ เราสามารถใช้ฟังก์ชัน AI ในตัวซึ่งกำหนดจุดโฟกัสได้

8
00:00:40,650 --> 00:00:47,120
‫ดังนั้นหากคุณได้ดูการควบคุม AI และมองหาการตั้งค่าโฟกัส มีวิธีการที่เกี่ยวข้องสองสามวิธีที่นี่

9
00:00:47,130 --> 00:00:52,380
‫หนึ่งคือการกำหนดจุดโฟกัส อีกอันหนึ่งคือการกำหนดโฟกัส และอีกอันหนึ่งคือการกำหนดจุดโฟกัสที่ชัดเจน

10
00:00:52,770 --> 00:01:03,830
‫แนวคิดในที่นี้คือคุณสามารถบอกตัวควบคุม AI ได้ว่าควรพยายามโฟกัสที่จุดใดจุดหนึ่งหรือควรพยายามเน้นที่นักแสดงคนใดคนหนึ่ง

11
00:01:03,840 --> 00:01:08,910
‫หากคุณเลือกอย่างหลัง หากคุณเลือกที่จะมุ่งเน้นไปที่นักแสดง สิ่งที่จะเกิดขึ้นก็คือเมื่อนักแสดงคนนั้นเคลื่อนไหว

12
00:01:08,910 --> 00:01:12,540
‫คุณจะมุ่งความสนใจไปที่นักแสดงคนนั้นต่อไป

13
00:01:12,540 --> 00:01:17,310
‫หากคุณเลือกโฟกัสที่จุดใดจุดหนึ่ง คุณจะยังคงเน้นที่จุดนั้นต่อไป

14
00:01:17,310 --> 00:01:23,600
‫แต่ถ้าจุดนั้นคือที่ตั้งของนักแสดง เมื่อนักแสดงนั้นเคลื่อนไหว จุดนั้นก็จะไม่ได้รับการอัพเดท

15
00:01:23,610 --> 00:01:29,700
‫ดังนั้นโดยทั่วไปแล้วจุดโฟกัสมีไว้สำหรับสิ่งที่ได้รับการแก้ไขในโลก นักแสดงสำหรับสิ่งต่าง ๆ ที่เคลื่อนไหวไปมานั้นสมเหตุสมผล

16
00:01:29,700 --> 00:01:36,360
‫แล้วเราก็มีฟังก์ชันโฟกัสที่ชัดเจนตรงนี้ ซึ่งบอกเราว่าเราควรหยุดโฟกัสไปที่บางสิ่ง

17
00:01:36,360 --> 00:01:37,110
‫นั่นคือวิธีการทำงาน

18
00:01:37,110 --> 00:01:39,030
‫คุณตั้งโฟกัส คุณโฟกัสชัดเจน

19
00:01:39,120 --> 00:01:45,090
‫ตอนนี้มีตัวแปรลำดับความสำคัญในนี้ซึ่งเราจะพูดถึงกันเล็กน้อย

20
00:01:45,090 --> 00:01:48,360
‫แต่แนวคิดก็คือ คุณมีลำดับความสำคัญต่างกัน

21
00:01:48,360 --> 00:01:55,470
‫เรามี enum นี้ซึ่งโดยค่าเริ่มต้นในการตั้งค่าโฟกัสและการตั้งค่าจุดโฟกัสถูกตั้งค่าเป็นการเล่นเกม

22
00:01:55,470 --> 00:02:05,340
‫ถ้าเราไปดูคำจำกัดความของ enum นั้น คุณจะเห็นว่ามีการย้ายเริ่มต้นและรูปแบบการเล่น และโดยพื้นฐานแล้วจะมีการระบุไว้ในลำดับความสำคัญ

23
00:02:05,340 --> 00:02:07,500
‫ดังนั้นการเล่นเกมจะมีลำดับความสำคัญสูงสุด

24
00:02:07,500 --> 00:02:09,960
‫หากคุณตั้งค่าบางอย่างให้เป็นเกมเพลย์ นั่นคือสิ่งที่จะพิจารณา

25
00:02:09,960 --> 00:02:15,690
‫หากการเล่นเกมไม่ได้ถูกตั้งค่าเพราะคุณล้างลำดับความสำคัญในการเล่นเกม มันก็จะดูว่ามันจะไปทางไหนและถ้าไม่เคลื่อนที่ไปไหน

26
00:02:15,690 --> 00:02:24,210
‫มันจะดูที่ลำดับความสำคัญเริ่มต้น ซึ่งอาจอยู่ไกลออกไป

27
00:02:24,210 --> 00:02:31,290
‫ดังนั้นหากคุณมียามที่มีพฤติกรรมการลาดตระเวน เขาจะเริ่มต้นมองหาตำแหน่งที่จะย้ายไปทันทีเมื่อเขาไปถึงที่นั่น

28
00:02:31,290 --> 00:02:34,140
‫คุณสามารถตั้งค่าจุดเริ่มต้นเพื่อให้เขาดูได้

29
00:02:34,140 --> 00:02:40,260
‫ไม่รู้สิ บางทีเขาอาจกำลังดูทางเข้าโซนเฉพาะของเขา หรืออะไรประมาณนั้น

30
00:02:40,260 --> 00:02:43,020
‫อย่างไรก็ตาม นี่คือสิ่งที่จัดลำดับความสำคัญทั้งหมดเกี่ยวกับ

31
00:02:43,020 --> 00:02:47,460
‫อย่างที่ฉันพูด เราไม่จำเป็นต้องใช้มันมากเกินไปเพราะส่วนใหญ่เราจะใช้ฟังก์ชันการเล่นเกมนี้เพื่อบอกว่า

32
00:02:47,460 --> 00:02:51,840
‫เฮ้ มีสิ่งที่น่าสนใจเกิดขึ้นที่นั่น

33
00:02:51,840 --> 00:02:54,690
‫มีผู้เล่นอยู่แล้ว ไปดูเขากัน

34
00:02:54,960 --> 00:03:00,630
‫สิ่งแรกที่เราจะทำคือเราจะเริ่มเล่นบนคอนโทรลเลอร์ AI ของเรา เพื่อให้เราสามารถโฟกัสไปที่

35
00:03:00,630 --> 00:03:02,820
‫Begin Play ได้

36
00:03:02,820 --> 00:03:05,880
‫นี่เป็นเพียงการแสดงให้เราเห็นว่าฟังก์ชันนี้ทำงานอย่างไร

37
00:03:05,880 --> 00:03:09,810
‫ดังนั้น Begin Play อย่างที่เราคงเคยเห็นมาก่อน มันเป็นฟังก์ชันที่มีการป้องกัน

38
00:03:09,810 --> 00:03:15,150
‫ดังนั้นเราจึงจำเป็นต้องสร้างส่วนที่ได้รับการป้องกัน จากนั้นเราต้องการให้โมฆะเสมือนของเราเริ่มเล่น

39
00:03:15,150 --> 00:03:20,970
‫เราจะใส่คำสำคัญแทนที่เพื่อความปลอดภัยที่นี่ จากนั้นเราจะดำเนินการต่อและสร้างการใช้งานใน

40
00:03:20,970 --> 00:03:23,130
‫C ++

41
00:03:23,250 --> 00:03:28,650
‫และเราต้องการที่จะเรียกร้องให้ super start play เพราะนั่นเป็นแนวปฏิบัติที่ดีเสมอ เพราะไม่เช่นนั้น สิ่งต่างๆ

42
00:03:28,650 --> 00:03:30,030
‫ในพิมพ์เขียวจะผิดพลาด

43
00:03:30,030 --> 00:03:35,310
‫หากคุณลืมทำเช่นนี้ หากคุณเคยมีปัญหากับพิมพ์เขียวหลังจากสร้างเกมเริ่มแล้ว ให้ตรวจสอบว่าคุณกำลังโทรหา

44
00:03:35,310 --> 00:03:37,380
‫super

45
00:03:37,710 --> 00:03:44,730
‫และเมื่อถึงจุดนี้ สิ่งที่เราต้องการจะทำคือจับตัวผู้จำนำและตั้งโฟกัสไปที่มัน

46
00:03:45,930 --> 00:03:52,710
‫ในการจับตัวผู้จำนำ เราสามารถใช้ฟังก์ชันจากส่วนหัวสแตติกของการเล่นเกม ซึ่งหากคุณวางเมาส์เหนือสิ่งนี้หรือค้นหาในตัวควบคุม

47
00:03:52,710 --> 00:03:58,170
‫p เพื่อค้นหาสถิตยภาพการเล่นเกม คุณจะพบว่าสิ่งนี้อยู่ภายใต้สถิตย์ของเกมเพลย์สแลชไปข้างหน้าของ

48
00:03:58,170 --> 00:03:59,940
‫kismet

49
00:03:59,940 --> 00:04:04,530
‫ดังนั้นเราจะกลับไปที่มือปืนที่ฉันควบคุม CP และรวมไว้ด้วย

50
00:04:04,530 --> 00:04:11,730
‫รวมแฮชแล้วมันจะเป็น kismet forward slash gameplay statics จากนั้นเราควรจะทำ U gameplay

51
00:04:11,730 --> 00:04:19,530
‫statics ของเราและใช้ฟังก์ชั่นจากที่นี่ซึ่งฉันพบว่ามีประโยชน์มากคือการรับผู้เล่นซึ่งจะกลับมาเป็น

52
00:04:19,530 --> 00:04:24,270
‫ตัวชี้ไปยังผู้เล่นจำนำ

53
00:04:24,270 --> 00:04:29,190
‫และทำได้โดยใช้วัตถุบริบทโลกและดัชนีผู้เล่น

54
00:04:29,190 --> 00:04:31,560
‫ในกรณีของเรา เราจะหาผู้เล่นที่เป็นศูนย์

55
00:04:31,650 --> 00:04:36,150
‫มาเล่นเบี้ยและรับโลกกันเถอะ

56
00:04:36,150 --> 00:04:42,060
‫จากนั้นเราจะมองหาดัชนีศูนย์ และเราจะบันทึกสิ่งนี้ลงในตัวแปร ตัวจำนำ

57
00:04:42,890 --> 00:04:46,040
‫ที่จะเป็นผู้เล่น -- ชอบ

58
00:04:46,040 --> 00:04:48,050
‫นั่นคือสิ่งที่เราต้องการเน้น

59
00:04:49,990 --> 00:04:53,250
‫ดังนั้นจึงเป็นเวลาท้าทายสำหรับคุณในการกำหนดโฟกัส

60
00:04:53,260 --> 00:04:58,930
‫ใช้เครื่องเล่น -- ที่เราเพิ่งใช้ฟังก์ชันการเรียก ตั้งค่า โฟกัส และทดสอบมันในโลกของเกมเพื่อดูว่าคุณเคลื่อนที่ไปรอบๆ

61
00:04:58,930 --> 00:05:03,370
‫ตัวละครต่างๆ ของเราหรือไม่

62
00:05:03,370 --> 00:05:04,870
‫พวกเขาจะติดตามคุณหรือไม่

63
00:05:04,870 --> 00:05:06,150
‫สายตาของพวกเขาจะติดตามคุณหรือไม่?

64
00:05:06,160 --> 00:05:07,840
‫หยุดวิดีโอชั่วคราวและค้นหา

65
00:05:08,900 --> 00:05:09,200
‫ตกลง.

66
00:05:09,200 --> 00:05:09,880
‫ยินดีต้อนรับกลับ.

67
00:05:09,890 --> 00:05:11,990
‫หวังว่ามันจะไม่ยากเกินไป

68
00:05:11,990 --> 00:05:16,850
‫เราต้องเรียก set focus เพราะ set focus อยู่ที่ parent

69
00:05:16,850 --> 00:05:19,310
‫เราไม่ต้องหาตัวชี้ใด ๆ ที่นี่

70
00:05:19,310 --> 00:05:22,640
‫เราตั้งโฟกัสแล้วได้อะไรมาบ้าง?

71
00:05:22,640 --> 00:05:28,040
‫โดยพื้นฐานแล้วเราจำเป็นต้องใส่นักแสดงเพราะลำดับความสำคัญได้รับการตั้งค่าเริ่มต้นสำหรับการเล่นเกมแล้ว

72
00:05:28,040 --> 00:05:34,940
‫ซึ่งเป็นสิ่งที่เราต้องการอยู่แล้ว ดังนั้นเราสามารถส่งผ่านจำนำผู้เล่นของเราได้ และนั่นควรเป็นคนที่เรามุ่งเน้น

73
00:05:34,940 --> 00:05:36,170
‫ดังนั้นไปข้างหน้าและสร้าง

74
00:05:37,440 --> 00:05:42,750
‫เสร็จแล้วก็ไปเล่น Unreal กัน

75
00:05:43,970 --> 00:05:46,490
‫ด้วยเหตุผลบางอย่างฉันยังมีจุดวางไข่ที่น่ารำคาญอยู่ที่นี่

76
00:05:46,520 --> 00:05:52,700
‫ไปข้างหน้าและลบมันออก และทำให้แน่ใจว่าเรากำลังวางไข่ใกล้กับตัวละครในสายตาของเรา

77
00:05:52,970 --> 00:05:53,840
‫ไปเลย.

78
00:05:53,870 --> 00:06:02,780
‫ไปดูกันเถอะ เดินไปรอบๆ ตัวละครตัวนี้ และในทันใดฉันก็เห็นได้ว่าเขากำลังหันหน้าเข้าหาตัวรับจำนำของฉันไม่ว่าที่ใดที่เบี้ยของฉันจะนำไป

79
00:06:02,780 --> 00:06:06,590
‫นั่นคือจุดเริ่มต้นของ AI บางส่วน

80
00:06:06,590 --> 00:06:11,280
‫ฉันรู้ว่ามันไม่มาก แต่เราจะพยายามทำให้เรื่องนี้ลึกซึ้งยิ่งขึ้นในการบรรยายครั้งต่อไป

81
00:06:11,300 --> 00:06:12,200
‫ฉันจะไปพบคุณที่นั่น.

