﻿1
00:00:04,480 --> 00:00:05,260
‫Xin chào và chào mừng.

2
00:00:05,260 --> 00:00:09,820
‫Trong bài giảng này, chúng tôi sẽ giới thiệu một điều mới trong cây hành vi, các dịch vụ.

3
00:00:09,820 --> 00:00:14,560
‫Chúng ta sẽ tìm hiểu các dịch vụ là gì, chúng giúp chúng ta như thế nào với hành vi chạy liên tục và cách

4
00:00:14,560 --> 00:00:16,390
‫chúng ta có thể viết riêng bằng C ++.

5
00:00:16,390 --> 00:00:17,380
‫Hãy đi sâu vào ngay.

6
00:00:18,060 --> 00:00:23,940
‫Giờ đây, chỉ còn lại một số phần logic trong bộ điều khiển AI của chúng tôi mà không có trong cây hành vi của chúng tôi.

7
00:00:24,000 --> 00:00:27,000
‫Một trong những điều này là thiết lập vị trí bắt đầu.

8
00:00:27,000 --> 00:00:30,120
‫Điều này tôi vẫn muốn đặt ở đây từ bộ điều khiển của tôi.

9
00:00:30,510 --> 00:00:36,210
‫Nhưng những thứ như đánh dấu ngay bây giờ mà tôi muốn làm từ bên trong cây hành vi của chúng tôi.

10
00:00:36,390 --> 00:00:38,100
‫Tôi muốn làm gì ở đây?

11
00:00:38,190 --> 00:00:40,020
‫Làm thế nào để tôi có được nó để làm gì?

12
00:00:40,410 --> 00:00:45,750
‫Đặt vị trí người chơi của chúng tôi để cập nhật vị trí người chơi đã biết gần đây nhất.

13
00:00:46,200 --> 00:00:51,540
‫Cả hai điều này chúng ta có thể làm với một thứ gọi là dịch vụ kế hoạch chi tiết.

14
00:00:51,540 --> 00:00:56,030
‫Vì vậy, hãy xem qua bản thiết kế của chúng tôi và xem điều gì đang xảy ra.

15
00:00:56,040 --> 00:01:03,090
‫Vì vậy, nếu tôi truy cập AI của mình và mở cây hành vi, gắn nó vào cửa sổ chính, thì tôi cần cho bạn thấy dịch vụ

16
00:01:03,090 --> 00:01:03,870
‫là gì.

17
00:01:03,870 --> 00:01:10,770
‫Chúng tôi chưa bao giờ sử dụng nó trước đây và về cơ bản nó là một cách để chạy một cái gì đó mỗi lần đánh

18
00:01:10,770 --> 00:01:14,790
‫dấu hoặc thường xuyên bất cứ khi nào một đường dẫn cụ thể hoạt động.

19
00:01:14,790 --> 00:01:22,380
‫Vì vậy, nếu tôi có một dịch vụ ở đây về hành vi Chase, thì một số mã sẽ có thể chạy mọi lúc khi hành vi Chase đang

20
00:01:22,650 --> 00:01:26,880
‫hoạt động, cho dù chúng tôi đang di chuyển, bắn, cân bất kỳ thứ nào trong

21
00:01:26,880 --> 00:01:28,800
‫số này, nó sẽ luôn đang chạy.

22
00:01:28,800 --> 00:01:31,200
‫Nhưng nếu chúng tôi đang điều tra thì sẽ không phải vậy.

23
00:01:31,410 --> 00:01:35,740
‫Vì vậy, đây chính xác là loại tình huống mà chúng tôi đang muốn sử dụng một dịch vụ.

24
00:01:35,760 --> 00:01:38,070
‫Bây giờ chúng ta hãy có một dịch vụ ví dụ.

25
00:01:38,070 --> 00:01:44,670
‫Một điều mà chúng tôi nhận thấy khi chơi là khi AI đến trong phạm vi của chúng tôi và chúng tôi di chuyển xung quanh, anh

26
00:01:44,670 --> 00:01:51,480
‫ấy sẽ không quay lại để nhìn chúng tôi và chúng tôi có thể khắc phục điều đó với một dịch vụ đã được tích hợp sẵn ở đây.

27
00:01:51,480 --> 00:01:58,680
‫Vì vậy, nếu chúng ta nhấp chuột phải vào nút này và đi đến thêm dịch vụ và tìm kiếm dịch vụ tiêu điểm mặc định, bạn có thể thấy nó có một màu

28
00:01:58,680 --> 00:02:00,210
‫khác, đó là màu xanh lá cây.

29
00:02:00,390 --> 00:02:05,370
‫Và nếu chúng ta chọn dịch vụ mặc định đó, nó cũng sẽ nằm bên dưới các nút trình tự này chứ không phải ở trên chúng,

30
00:02:05,370 --> 00:02:06,870
‫đó là những gì người trang trí làm.

31
00:02:07,350 --> 00:02:11,940
‫Vì vậy, với tiêu điểm mặc định được chọn, sau đó bạn có thể chọn những gì bạn muốn lấy tiêu điểm.

32
00:02:11,940 --> 00:02:17,460
‫Và trong trường hợp này, chúng tôi muốn tập trung vào vị trí của người chơi, hãy tiếp tục và nhấn lưu và nhấn phát.

33
00:02:17,460 --> 00:02:23,370
‫Và bây giờ nếu chúng ta đi xem xét và di chuyển xung quanh, bạn có thể thấy anh ấy đang xoay người để theo dõi chúng ta.

34
00:02:23,790 --> 00:02:24,840
‫Những thứ tuyệt vời.

35
00:02:24,930 --> 00:02:32,160
‫Bây giờ, chúng tôi muốn có thể triển khai một dịch vụ tương tự trong C ++, dịch vụ này sẽ cập nhật vị trí người chơi của

36
00:02:32,160 --> 00:02:38,940
‫chúng tôi liên tục và cập nhật vị trí người chơi đã biết cuối cùng của chúng tôi trong khi chúng tôi đang truy đuổi.

37
00:02:38,940 --> 00:02:45,000
‫Vì vậy, chúng tôi sẽ làm điều đó như hai dịch vụ riêng biệt và bạn có thể thấy cách mà các dịch vụ cũng tự động

38
00:02:45,000 --> 00:02:51,090
‫có thể làm cho mọi thứ hiệu quả hơn một chút so với làm điều đó trong tích tắc vì bạn chỉ có thể chạy vị trí người

39
00:02:51,090 --> 00:02:54,870
‫chơi đã biết cuối cùng khi bạn ở trong phần bên phải của cây hành vi.

40
00:02:54,870 --> 00:03:00,840
‫Vì vậy, chúng ta hãy đi qua hộp cát, đi tới trình duyệt nội dung, thêm lớp C ++ mới mới, sẽ hiển thị tất cả các lớp và tìm

41
00:03:00,840 --> 00:03:02,880
‫kiếm những tùy chọn của chúng ta ở đây.

42
00:03:03,000 --> 00:03:11,370
‫Chúng tôi đang tìm kiếm dịch vụ BT và sau đó có một số tùy chọn giống như chúng tôi đã có với nhiệm vụ BT của mình, chúng tôi đã có đế

43
00:03:11,490 --> 00:03:16,080
‫Bảng đen và thực sự chúng tôi sẽ muốn có Đế bảng đen vì chúng tôi muốn biết

44
00:03:16,080 --> 00:03:18,180
‫khóa nào chúng tôi nên được cập nhật.

45
00:03:18,180 --> 00:03:20,640
‫Ví dụ, đó có phải là vị trí của người chơi không?

46
00:03:20,640 --> 00:03:23,190
‫Nó có phải là vị trí cuối cùng của người chơi được biết không?

47
00:03:23,310 --> 00:03:28,830
‫Vì vậy, chúng tôi sẽ đi và đánh tiếp theo vào cái này với Blackboard Base được

48
00:03:28,830 --> 00:03:36,540
‫chọn và chúng tôi sẽ gọi đây là dịch vụ BT, gạch dưới vị trí của người chơi như vậy và tiếp tục tạo lớp đó.

49
00:03:36,660 --> 00:03:42,870
‫Vì vậy, khi chúng tôi đã biên dịch xong, chúng tôi sẽ chuyển sang mã Visual Studio và bạn có thể thấy rằng chúng tôi

50
00:03:42,870 --> 00:03:48,390
‫đã có vị trí trình phát dịch vụ BT này được kế thừa từ Cuộc gọi cơ sở bảng đen dịch vụ.

51
00:03:48,390 --> 00:03:49,110
‫Đó là những gì chúng tôi muốn.

52
00:03:49,110 --> 00:03:51,870
‫Bây giờ chúng ta sẽ chuyển sang chức năng nào?

53
00:03:52,050 --> 00:03:58,470
‫Chà, tôi sẽ thử và di chuyển chức năng đơn giản nhất có thể, chỉ là đặt giá trị của vị trí cơ

54
00:03:58,740 --> 00:04:01,650
‫bản của người chơi được biết đến cuối cùng.

55
00:04:01,650 --> 00:04:08,340
‫Mặc dù khóa này sẽ được định cấu hình trong cây hành vi, không phải ở đây dưới dạng văn bản thuần túy, nhưng nó

56
00:04:08,340 --> 00:04:12,390
‫sẽ lấy vị trí của trình phát và đặt nó thành phím bảng đen.

57
00:04:12,390 --> 00:04:17,640
‫Và nó sẽ không thực hiện bất kỳ lý do kiểm tra đường ngắm nào là nếu chúng ta chạy nó trong cây hành

58
00:04:17,640 --> 00:04:21,930
‫vi của mình chỉ khi chúng ta đang đuổi theo thì chúng ta không cần kiểm tra đường ngắm.

59
00:04:21,930 --> 00:04:25,470
‫Chúng tôi có thể thấy trình phát tự động mà chúng tôi biết đó là trường hợp.

60
00:04:25,470 --> 00:04:29,010
‫Vì vậy, một sự đơn giản hóa khác ở đó để thực hiện nó trong dịch vụ.

61
00:04:29,520 --> 00:04:36,840
‫Vì vậy, điều này sẽ khá đơn giản nếu chúng ta biết cách lấy một cuộc gọi phương thức ở đây trong dịch vụ BT.

62
00:04:37,230 --> 00:04:41,940
‫Vì vậy, hãy đi và xem xét dịch vụ BT của chúng tôi để xem những gì có sẵn ở đó.

63
00:04:41,940 --> 00:04:44,100
‫Tài liệu là gì, chúng ta có thể làm gì?

64
00:04:44,130 --> 00:04:51,120
‫Các phương pháp chính ở đây bạn có thể thấy đang trở nên có liên quan trên C liên quan đến nút đánh dấu và khi bắt đầu tìm kiếm.

65
00:04:51,150 --> 00:04:52,020
‫Khi bắt đầu tìm kiếm.

66
00:04:52,020 --> 00:04:54,240
‫Chúng tôi không đặc biệt quan tâm đến nhưng đánh dấu vào nút.

67
00:04:54,240 --> 00:05:00,870
‫Có, đó là nơi chúng tôi sẽ nhận được bản cập nhật mọi lúc rằng dịch vụ này đang trên đường hoạt động.

68
00:05:01,110 --> 00:05:02,970
‫Vì vậy, đó là lúc chúng tôi muốn triển khai.

69
00:05:02,980 --> 00:05:06,180
‫Chúng tôi đi và tìm kiếm trong tập tin này để tìm thấy chữ ký đầy đủ ở đây.

70
00:05:06,390 --> 00:05:08,010
‫Chúng ta có thể thấy nó ở đây.

71
00:05:08,010 --> 00:05:09,270
‫Hãy xem, nó nằm ở phần nào?

72
00:05:09,270 --> 00:05:10,770
‫Nó nằm trong phần được bảo vệ.

73
00:05:10,770 --> 00:05:16,890
‫Vì vậy, chúng tôi sẽ chuyển đến dịch vụ BT của chúng tôi mà chúng tôi đã tạo và tạo một phần được bảo vệ.

74
00:05:17,530 --> 00:05:24,220
‫Và dán vào, nó sẽ tự động được ghi đè ở đây vì Dịch vụ BT đang kế thừa chính nó từ một lớp cha, nhưng

75
00:05:24,220 --> 00:05:27,660
‫không có hại gì khi tự ghi đè nó một lần nữa.

76
00:05:27,670 --> 00:05:32,920
‫Chúng ta có thể thực hiện một sự thay đổi điều khiển P để tạo ra việc triển khai và sau đó chúng ta muốn gọi đến super.

77
00:05:32,920 --> 00:05:39,550
‫Vì vậy, chúng tôi muốn nút siêu đánh dấu và chúng tôi muốn truyền vào comp của riêng chúng tôi và bộ nhớ nút của chúng tôi.

78
00:05:39,550 --> 00:05:41,500
‫Và hãy xem, có một số thứ khác ở đây.

79
00:05:41,500 --> 00:05:46,930
‫Chúng tôi có một giây Delta cũng như những gì chúng tôi cần chuyển qua và cuối cùng kết thúc bằng dấu chấm phẩy

80
00:05:46,990 --> 00:05:49,960
‫sẽ kết thúc việc triển khai nút đánh dấu của chúng tôi.

81
00:05:49,960 --> 00:05:56,320
‫Bây giờ ở đây về cơ bản chúng ta muốn thực hiện hành vi đó từ I controller CP, cái mà chúng ta đang lấy thành

82
00:05:56,320 --> 00:05:59,590
‫phần bảng đen, sau đó đặt một giá trị dưới dạng vectơ.

83
00:05:59,590 --> 00:06:04,120
‫Chà, chúng tôi biết cách lấy các thành phần bảng đen từ các tham chiếu thành phần của chủ sở hữu.

84
00:06:04,120 --> 00:06:05,410
‫Vì vậy, đó là khá đơn giản.

85
00:06:05,410 --> 00:06:11,590
‫Chúng tôi sẽ thực hiện dấu chấm của chủ sở hữu comp và sau đó chúng tôi sẽ thực hiện thành phần bảng đen nhận

86
00:06:11,590 --> 00:06:17,980
‫được ghi nhớ rằng chúng tôi cần phải bao gồm băm ở đây cho thành phần bảng đen có dấu gạch chéo chuyển tiếp cây hành vi.

87
00:06:17,980 --> 00:06:20,410
‫Sau đó, chúng tôi có thể sử dụng toán tử mũi tên của chúng tôi.

88
00:06:20,500 --> 00:06:27,370
‫Và những gì chúng ta có thể làm ở đây chỉ là đặt giá trị dưới dạng vector và sau đó chúng ta cần một khóa.

89
00:06:27,370 --> 00:06:30,490
‫Chà, chúng tôi biết cách giải quyết vấn đề này, nhưng chúng ta hãy làm mới bộ nhớ của mình.

90
00:06:30,490 --> 00:06:36,370
‫Nếu chúng tôi đi đến dịch vụ BT của chúng tôi gạch dưới Blackboard Base, bạn có thể thấy tương tự như với nhiệm vụ, chúng

91
00:06:36,370 --> 00:06:38,380
‫tôi đã có phím bảng đen được chọn.

92
00:06:38,380 --> 00:06:39,310
‫Đó là những gì chúng tôi sẽ sử dụng.

93
00:06:39,340 --> 00:06:44,950
‫Lấy khóa Bảng đen được chọn lấy khóa đã được chọn trong cây hành vi và sau đó chúng tôi muốn giá trị

94
00:06:44,950 --> 00:06:45,940
‫vectơ của mình.

95
00:06:45,940 --> 00:06:46,840
‫Chúng ta sẽ lấy nó ở đâu?

96
00:06:46,840 --> 00:06:48,580
‫Chúng tôi sẽ giống hệt như bộ điều khiển AI.

97
00:06:48,580 --> 00:06:52,960
‫Chúng tôi sẽ đưa người chơi - đầu tiên và quan trọng nhất là ở trên cùng.

98
00:06:52,960 --> 00:06:57,880
‫Sau đó, chúng tôi cần kiểm tra xem điều này có trống hay không và chúng tôi cũng cần bao gồm các tĩnh trong trò chơi của mình.

99
00:06:57,880 --> 00:07:04,600
‫Vì vậy, hãy đảm bảo rằng chúng tôi có các tĩnh về trò chơi bao gồm từ CP điều khiển được bao gồm trong vị trí trình phát dịch vụ

100
00:07:04,750 --> 00:07:06,130
‫trình phát của chúng tôi.

101
00:07:06,790 --> 00:07:13,750
‫Sau đó, chúng tôi sẽ làm và nếu con trỏ của người chơi bằng với con trỏ null, thì những gì chúng tôi sẽ muốn làm là quay

102
00:07:13,750 --> 00:07:20,080
‫trở lại sớm ở đây nó trả về giá trị vô hiệu vì vậy chúng tôi có thể nhanh chóng quay trở lại sớm.

103
00:07:20,140 --> 00:07:30,070
‫Sau đó, chúng tôi có thể sử dụng con tốt của người chơi của chúng tôi ở đây để chỉ cần lấy vị trí của diễn viên và chúng tôi có thể cần phải bao gồm ở đây.

104
00:07:30,070 --> 00:07:30,970
‫Chúng tôi sẽ xem chúng tôi đi như thế nào.

105
00:07:30,970 --> 00:07:34,420
‫Chà, không có hại gì khi được an toàn, phải không, và nói rõ ràng về những điều này.

106
00:07:34,420 --> 00:07:38,890
‫Vì vậy, chúng tôi sẽ thực hiện bao gồm cho khuôn khổ trò chơi và sau đó cắt giảm dần.

107
00:07:38,890 --> 00:07:44,050
‫Nó sẽ được xử lý trên H để chúng tôi có thể đảm bảo rằng chúng tôi đã có mọi thứ theo thứ tự ở đây và sau

108
00:07:44,050 --> 00:07:46,090
‫đó chúng tôi chỉ đặt giá trị dưới dạng vectơ.

109
00:07:46,090 --> 00:07:47,350
‫Đó phải là tất cả những gì chúng ta cần.

110
00:07:47,350 --> 00:07:49,210
‫Hãy đi và biên dịch và xem liệu điều này có hiệu quả không.

111
00:07:49,210 --> 00:07:50,350
‫Trong thực tế, một điều nữa.

112
00:07:50,350 --> 00:07:54,700
‫Chúng ta có thể muốn có một cái tên đẹp, vì vậy chúng ta nên có một hàm tạo ở đây.

113
00:07:54,700 --> 00:08:00,550
‫Vì vậy, tôi sẽ tạo một phần công khai với hàm tạo, nó sẽ là tên của lớp, và sau

114
00:08:00,550 --> 00:08:03,760
‫đó chúng tôi tiếp tục tạo phần triển khai đó.

115
00:08:03,760 --> 00:08:08,590
‫Tôi sẽ đưa phần triển khai của mình lên trên phần triển khai cho nút đánh dấu

116
00:08:08,590 --> 00:08:17,020
‫và sau đó chúng tôi sẽ đặt tên nút bằng với nó sẽ là cập nhật vị trí trình phát và hãy xây dựng và xem điều đó có hoạt

117
00:08:17,020 --> 00:08:17,680
‫động không.

118
00:08:17,710 --> 00:08:19,300
‫Có vẻ như tôi đã thiếu dấu chấm phẩy.

119
00:08:19,300 --> 00:08:20,170
‫Hãy thử lại lần nữa.

120
00:08:20,170 --> 00:08:23,350
‫Khi nó được biên dịch thành công, chúng ta có thể vượt qua kẻ thù của mình.

121
00:08:23,350 --> 00:08:29,350
‫Tôi và cũng như trọng tâm thiết lập, muốn thêm một dịch vụ mới mà chúng tôi đã hiển thị ở đây làm

122
00:08:29,350 --> 00:08:34,600
‫vị trí người chơi, nơi mà cái tên đẹp về cơ bản là vị trí người chơi cập nhật.

123
00:08:34,600 --> 00:08:40,720
‫Bạn có thể thấy rằng nó muốn nó cho bạn biết tần suất tích tắc mỗi 0. 4 đến 0. 6 giây.

124
00:08:40,720 --> 00:08:43,990
‫Điều đó tốt hơn là sử dụng đánh dấu vì chúng ta biết đánh dấu chạy mọi khung hình ở đây.

125
00:08:43,990 --> 00:08:46,660
‫Điều này đang chạy ít thường xuyên hơn, đó là một điều tốt.

126
00:08:46,660 --> 00:08:52,450
‫Và chúng tôi có thể đi vào chi tiết và tạo một phím bảng đen, thả xuống và chọn mà chúng tôi muốn cập nhật

127
00:08:52,450 --> 00:08:58,720
‫không chỉ là vị trí người chơi mà còn là vị trí người chơi được biết cuối cùng, bởi vì điều đó sẽ xảy ra mọi khung hình

128
00:08:58,720 --> 00:09:02,800
‫miễn là chúng ta đang theo đuổi và điều đó là hành vi mà chúng tôi muốn.

129
00:09:02,800 --> 00:09:08,940
‫Vì vậy, một nút dịch vụ nữa mà chúng tôi muốn tiếp tục và tạo sẽ thực hiện hành vi của bộ điều khiển AI để đi

130
00:09:08,950 --> 00:09:11,230
‫xuống để đánh dấu và xem những gì còn lại.

131
00:09:11,230 --> 00:09:17,530
‫Việc chúng tôi làm ở đây là cập nhật vị trí của người chơi với điều kiện là chúng tôi có tầm nhìn hay không.

132
00:09:17,530 --> 00:09:19,390
‫Vì vậy, chúng tôi muốn nó cập nhật vị trí người chơi.

133
00:09:19,390 --> 00:09:22,450
‫Nếu chúng ta có tầm nhìn, hãy dọn sạch vị trí nếu không.

134
00:09:22,450 --> 00:09:25,750
‫Vì vậy, đó sẽ là một nút dịch vụ mới vì nó có một hành vi hơi khác.

135
00:09:25,780 --> 00:09:28,270
‫Chúng tôi sẽ thêm lớp C ++ mới mới.

136
00:09:28,270 --> 00:09:33,220
‫Chúng tôi sẽ hiển thị tất cả các lớp và một lần nữa, chúng tôi sẽ thực hiện dịch

137
00:09:33,220 --> 00:09:39,910
‫vụ BT, gạch dưới các cơ sở bảng đen, lớp cơ sở của chúng tôi và chúng tôi sẽ gọi nó là Đánh dấu dưới dịch vụ.

138
00:09:40,590 --> 00:09:44,010
‫Vị trí của người chơi nếu được nhìn thấy.

139
00:09:44,130 --> 00:09:46,980
‫Và tiếp tục và tạo lớp đó.

140
00:09:46,980 --> 00:09:51,120
‫Và bởi vì đây là tất cả những thứ bạn hầu hết đã thấy trước đây, sẽ là thách thức của bạn khi triển

141
00:09:51,120 --> 00:09:51,930
‫khai dịch vụ này.

142
00:09:51,930 --> 00:09:57,570
‫Vì vậy, bạn sẽ triển khai nút tic bằng cách sử dụng mã trong bộ điều khiển AI.

143
00:09:57,570 --> 00:10:04,350
‫Theo hướng dẫn của bạn, bạn sẽ cần nắm giữ con trỏ bộ điều khiển AI từ bên trong dịch vụ BT.

144
00:10:04,350 --> 00:10:09,810
‫Bây giờ điều này giống hệt như chúng ta đã làm trong tác vụ BT, vì vậy hãy sử dụng nó làm hướng dẫn để nắm bắt

145
00:10:09,810 --> 00:10:11,340
‫con trỏ bộ điều khiển AI đó.

146
00:10:11,520 --> 00:10:15,270
‫Bạn sẽ cần con trỏ bộ điều khiển AI để kiểm tra đường nhìn.

147
00:10:15,270 --> 00:10:21,630
‫Hãy nhớ rằng, đường ngắm là một phương thức trên bộ điều khiển AI và sau đó bạn cần cập nhật hoặc xóa khóa

148
00:10:21,660 --> 00:10:27,270
‫tùy thuộc vào việc kiểm tra đường nhìn của bạn và sau đó đặt nút này vào cây hành vi.

149
00:10:27,270 --> 00:10:32,130
‫Bạn nghĩ đâu sẽ là cấp phù hợp của cây hành vi để dịch vụ này chạy?

150
00:10:32,130 --> 00:10:33,660
‫Làm thế nào sẽ nghĩ về điều đó?

151
00:10:33,660 --> 00:10:37,110
‫Có một chút trầy xước ở cằm, hãy tạm dừng video và tiếp tục.

152
00:10:38,070 --> 00:10:38,310
‫Được chứ.

153
00:10:38,310 --> 00:10:38,870
‫Chào mừng trở lại.

154
00:10:38,880 --> 00:10:44,670
‫Vì vậy, điều này đã mở ra một dịch vụ làm đẹp mới trong mã Visual Studio.

155
00:10:44,670 --> 00:10:51,750
‫Bây giờ nó sẽ giống hệt nhau trong tiêu đề, vì vậy tôi sẽ tiếp tục và sao chép nó

156
00:10:51,750 --> 00:10:59,340
‫vào tiêu đề mới được tạo của chúng tôi, ngoại lệ là chúng tôi cần thay đổi tên của hàm tạo để

157
00:10:59,340 --> 00:11:00,300
‫phù hợp.

158
00:11:00,300 --> 00:11:07,650
‫Bây giờ chúng ta sẽ tạo một triển khai cho hàm tạo và đặt cho nó một tên nút để cập nhật vị trí của

159
00:11:08,010 --> 00:11:12,690
‫người chơi nếu được nhìn thấy và thêm dấu chấm phẩy ở cuối ở đây.

160
00:11:12,720 --> 00:11:14,400
‫Lần này đừng quên điều đó.

161
00:11:14,400 --> 00:11:21,660
‫Sau đó, quay trở lại C ++ cũng sẽ triển khai nút đánh dấu và tôi sẽ sao chép lại nếu chúng ta

162
00:11:21,660 --> 00:11:25,080
‫có thể tự tìm thấy vị trí của người chơi.

163
00:11:25,080 --> 00:11:31,740
‫CP Và chỉ cần sao chép lời kêu gọi đến siêu cấp và việc lấy đồ của người chơi và kiểm tra kết quả trả về

164
00:11:31,740 --> 00:11:32,610
‫vô giá trị.

165
00:11:32,610 --> 00:11:36,090
‫Trên thực tế, tôi sẽ sao chép toàn bộ cơ thể và chúng tôi sẽ sửa đổi nó từ đó.

166
00:11:36,600 --> 00:11:43,380
‫Vì vậy, sao chép nó và chúng tôi cũng sẽ sao chép quyền truy cập vào thành phần bảng đen với bao gồm cho thành phần

167
00:11:43,740 --> 00:11:49,290
‫bảng đen, tĩnh trong trò chơi và hình vẽ, bởi vì chúng tôi cần quyền truy cập vào tất cả

168
00:11:49,290 --> 00:11:50,160
‫những thứ đó.

169
00:11:50,160 --> 00:11:53,130
‫Trên thực tế, nhiều chức năng được chia sẻ ở đây.

170
00:11:53,130 --> 00:11:58,860
‫Bạn có thể nghĩ về việc họ bằng cách nào đó chia sẻ đoạn mã này, nhưng tôi nghĩ không có quá nhiều sự trùng lặp

171
00:11:58,860 --> 00:12:00,360
‫mà chúng ta cần quan tâm.

172
00:12:00,840 --> 00:12:05,430
‫Vì vậy, những gì chúng ta sẽ phải làm ở đây cũng là kiểm tra xem chúng ta có một bộ điều khiển mắt hay không.

173
00:12:05,430 --> 00:12:15,450
‫Vì vậy, tôi sẽ thực hiện nếu thành phần chủ sở hữu hoặc chủ sở hữu comp dot get I owner bằng con trỏ null, thì chúng tôi sẽ

174
00:12:15,720 --> 00:12:19,470
‫muốn tiếp tục và quay lại ở giai đoạn này.

175
00:12:19,950 --> 00:12:24,360
‫Sau đó, điều tiếp theo chúng tôi sẽ muốn làm là kiểm tra khả năng hiển thị của chúng tôi.

176
00:12:24,360 --> 00:12:32,070
‫Vì vậy, chúng tôi sẽ thực hiện nếu chủ sở hữu dấu chấm nhận tôi là chủ sở hữu và sau đó chúng tôi sẽ thực hiện một mũi tên ở đây và chúng tôi cần

177
00:12:32,070 --> 00:12:34,440
‫bao gồm bộ điều khiển của chúng tôi ở đây.

178
00:12:34,440 --> 00:12:36,900
‫Vì vậy, nó sẽ bao gồm hàm băm.

179
00:12:38,120 --> 00:12:41,810
‫Và sau đó sẽ là tôi điều khiển H.

180
00:12:42,380 --> 00:12:48,470
‫Sau đó, chúng tôi muốn làm dòng và hãy xem cách sử dụng chính xác ở đây là gì.

181
00:12:48,470 --> 00:12:54,650
‫Nếu chúng tôi xem xét CP I controller, thì tầm nhìn thứ hai là những gì chúng tôi muốn.

182
00:12:54,650 --> 00:13:00,380
‫Vì vậy, đường ngắm thứ hai sau đó chúng ta cần thực hiện đường ngắm cho người chơi tốt.

183
00:13:00,380 --> 00:13:02,870
‫Trong trường hợp này, chúng ta có tầm nhìn đến người chơi tốt không?

184
00:13:03,320 --> 00:13:04,820
‫Đó có phải là những gì chúng ta đang làm trong CP?

185
00:13:04,820 --> 00:13:05,810
‫Hãy kiểm tra lại điều đó.

186
00:13:05,810 --> 00:13:06,680
‫Vâng chúng tôi.

187
00:13:07,220 --> 00:13:11,450
‫Sau đó, chúng tôi sẽ muốn tiếp tục và đặt các giá trị khác nhau.

188
00:13:11,510 --> 00:13:15,800
‫Vì vậy, chúng tôi đang đặt giá trị vectơ cho vị trí diễn viên nhận đồ của người chơi.

189
00:13:15,800 --> 00:13:18,620
‫Vâng, đó là nếu chúng ta có một tầm nhìn khác.

190
00:13:18,620 --> 00:13:22,430
‫Nếu chúng ta không có tầm nhìn, chúng ta biết rằng chúng ta cần phải xóa giá trị đó.

191
00:13:22,430 --> 00:13:26,030
‫Vì vậy, chúng tôi sẽ vẫn nhận thành phần chủ sở hữu, nhận thành phần bảng đen.

192
00:13:26,060 --> 00:13:31,640
‫Sau đó, nó sẽ có giá trị rõ ràng và chúng tôi sẽ vẫn xóa giá trị của

193
00:13:31,640 --> 00:13:37,790
‫phím bảng đen đã chọn và điều đó sẽ giúp chúng tôi triển khai vị trí người chơi khá nhiều.

194
00:13:37,790 --> 00:13:41,480
‫Nếu thấy, chúng ta hãy đi và biên dịch và xem nó có hoạt động tốt không.

195
00:13:41,480 --> 00:13:42,710
‫Biên dịch đã thành công.

196
00:13:42,710 --> 00:13:44,570
‫Hãy đi vào cây hành vi.

197
00:13:44,570 --> 00:13:50,420
‫Bây giờ cấp độ tôi muốn nó chạy về cơ bản là ở cấp độ cao nhất trong bộ chọn ban đầu, vì tôi

198
00:13:50,420 --> 00:13:56,060
‫muốn nó luôn cập nhật vị trí người chơi về cơ bản vì chúng tôi cần có thể hủy bỏ bất kỳ hành

199
00:13:56,060 --> 00:13:59,600
‫vi nào khác dựa trên vị trí người chơi đang được thiết lập.

200
00:13:59,600 --> 00:14:02,810
‫Vì vậy, chúng ta cần có thể bỏ đặt nó bất cứ lúc nào.

201
00:14:02,900 --> 00:14:08,240
‫Vì vậy, tôi sẽ đi và nhấp chuột phải vào bộ chọn cấp cao nhất, thêm dịch vụ, thêm địa điểm chơi

202
00:14:08,240 --> 00:14:08,870
‫nếu thấy.

203
00:14:09,200 --> 00:14:13,760
‫Và sau đó, chúng ta sẽ cần chọn nút dịch vụ đó và chọn phím bảng đen của nó, đây sẽ là

204
00:14:13,760 --> 00:14:15,260
‫vị trí trình phát của chúng ta.

205
00:14:15,710 --> 00:14:20,270
‫Vì vậy, một thiết lập ở vị trí người chơi, vị trí cập nhật trình phát, người khác ngớ ngẩn hơn là cập

206
00:14:20,270 --> 00:14:22,220
‫nhật vị trí người chơi đã biết cuối cùng.

207
00:14:22,550 --> 00:14:29,270
‫Và bây giờ chúng ta có thể đi xuống bộ điều khiển AI của mình và về cơ bản xóa tất cả mã này

208
00:14:29,270 --> 00:14:33,740
‫trong TTIC vì nó đã được thay thế bởi các dịch vụ của chúng tôi.

209
00:14:33,740 --> 00:14:36,350
‫Và chúng ta có thể tiếp tục và biên dịch và xem liệu điều đó có hiệu quả không.

210
00:14:36,350 --> 00:14:41,060
‫Hãy chuyển đến trình chỉnh sửa và chơi và xem liệu chúng ta có còn kẻ thù nào đến với chúng ta hay không.

211
00:14:41,060 --> 00:14:46,580
‫Anh ta đang chạy đến chỗ chúng tôi, mất dấu, rồi quay lại với chúng tôi, bắt đầu bắn.

212
00:14:46,580 --> 00:14:46,850
‫Chuẩn rồi.

213
00:14:46,850 --> 00:14:53,000
‫Về cơ bản mọi thứ đang hoạt động như trước đây, ngoại trừ bây giờ nó đang thực hiện hoàn toàn thông qua các dịch vụ

214
00:14:53,000 --> 00:14:55,730
‫mà chúng tôi đã viết cho chính mình bằng C ++.

215
00:14:55,760 --> 00:15:01,100
‫Bài giảng tiếp theo, chúng ta sẽ sửa lỗi khó chịu đó trong đó AI tiếp tục bắn

216
00:15:01,100 --> 00:15:03,290
‫và cuối cùng tìm cách tự diệt.

217
00:15:03,290 --> 00:15:04,160
‫Tôi sẽ gặp bạn ở đó.

