﻿1
00:00:04,080 --> 00:00:05,730
‫Xin chào và chào mừng trở lại.

2
00:00:05,760 --> 00:00:10,380
‫Bây giờ chúng tôi đã sẵn sàng để xoay tháp pháo và chúng tôi muốn thực hiện việc này bằng cách sử dụng chuột.

3
00:00:10,380 --> 00:00:14,790
‫Và vị trí truy cập đó từ lần truy cập theo dõi mà chúng tôi đã thực hiện trong video trước.

4
00:00:14,880 --> 00:00:22,200
‫Vì vậy, khi tôi di chuyển con trỏ chuột của mình, tháp pháo sẽ quay và hướng về hướng của con trỏ chuột.

5
00:00:22,320 --> 00:00:28,110
‫Và ngay cả khi tôi nhấp vào khung nhìn và bắt đầu chơi, tôi vẫn có thể di chuyển con trỏ chuột

6
00:00:28,110 --> 00:00:31,080
‫xung quanh để xoay tháp pháo và đặt hướng của nó.

7
00:00:31,110 --> 00:00:35,850
‫Điều này sẽ cho phép tôi nhắm mục tiêu khi tôi có khả năng bắn đạn.

8
00:00:35,880 --> 00:00:36,200
‫Được chứ.

9
00:00:36,240 --> 00:00:41,770
‫Vì vậy, để đạt được điều này, chúng ta cần phải tìm ra hướng mà chúng ta muốn tháp pháo của chúng ta hướng vào.

10
00:00:41,790 --> 00:00:46,410
‫Và khi chúng tôi đã tìm ra hướng đó, thì chúng tôi có thể thiết lập vòng quay của lưới tháp pháo.

11
00:00:46,500 --> 00:00:52,470
‫Bây giờ, để có được hướng mà chúng ta muốn tháp pháo chỉ vào, chúng ta cần thực hiện một chút

12
00:00:52,470 --> 00:00:53,500
‫phép toán vectơ.

13
00:00:53,520 --> 00:00:59,570
‫Những gì chúng tôi đang tìm kiếm là một vectơ từ tháp pháo xe tăng đến vị trí đánh dấu vết của chúng tôi.

14
00:00:59,580 --> 00:01:05,940
‫Giờ đây, chúng ta có thể dễ dàng xác định vị trí của xe tăng hoặc bất kỳ thành phần nào của nó, chẳng hạn như vị trí tháp

15
00:01:05,940 --> 00:01:06,960
‫pháo của xe tăng.

16
00:01:06,990 --> 00:01:09,600
‫Chúng tôi sẽ gọi vị trí này là tháp pháo, vị trí.

17
00:01:09,600 --> 00:01:13,440
‫Và chúng tôi cũng biết cách chúng tôi có thể xác định được vị trí của đầu dấu vết.

18
00:01:13,470 --> 00:01:15,800
‫Chúng tôi sẽ gọi đây là vị trí truy cập dấu vết.

19
00:01:15,810 --> 00:01:20,760
‫Những gì chúng tôi quan tâm là véc tơ từ vị trí tháp pháo để theo dõi vị trí trúng đạn.

20
00:01:20,760 --> 00:01:23,100
‫Chúng tôi sẽ gọi vectơ này để nhắm mục tiêu.

21
00:01:23,130 --> 00:01:27,030
‫Bây giờ, toán học vectơ để đến được mục tiêu thực sự khá đơn giản.

22
00:01:27,060 --> 00:01:33,120
‫Để có được một vectơ từ điểm đầu đến điểm cuối luôn luôn là điểm cuối trừ điểm bắt đầu.

23
00:01:33,420 --> 00:01:39,270
‫Vì vậy, nếu chúng tôi lấy dấu vết của mình, vị trí bắn trúng và trừ đi vị trí của tháp pháo vectơ, thì vectơ

24
00:01:39,270 --> 00:01:41,620
‫kết quả từ điều này sẽ là mục tiêu.

25
00:01:41,640 --> 00:01:47,160
‫Bây giờ, khi chúng ta đã có hai vectơ hướng mục tiêu, chúng ta muốn chuyển đổi nó thành một chuyển động quay để chúng ta có thể

26
00:01:47,160 --> 00:01:49,530
‫thiết lập chuyển động quay của tháp pháo của xe tăng.

27
00:01:49,530 --> 00:01:53,750
‫Và kiểu vectơ có một hàm dựng sẵn gọi là phép quay.

28
00:01:53,760 --> 00:02:01,230
‫Vì vậy, nếu chúng tôi lấy vectơ mục tiêu của chúng tôi và gọi là quay trên nó, điều này sẽ trả về một công cụ quay F tương ứng

29
00:02:01,230 --> 00:02:02,260
‫với hướng đó.

30
00:02:02,280 --> 00:02:04,430
‫Bây giờ chúng ta cần ghi nhớ một số điều.

31
00:02:04,440 --> 00:02:11,160
‫Kết quả bắn trúng dấu vết thường nằm trên sàn và véc tơ từ tháp pháo xe tăng đến kết quả bắn

32
00:02:11,160 --> 00:02:14,620
‫trúng dấu vết sẽ không song song với mặt đất.

33
00:02:14,640 --> 00:02:20,850
‫Điều này có nghĩa là nếu chúng ta đặt vòng quay của tháp pháo của xe tăng thành bộ quay mà chúng ta nhận được từ vectơ

34
00:02:20,850 --> 00:02:26,790
‫hướng đó, chúng ta có thể nhận được một cái gì đó như thế này trong đó tháp pháo nghiêng xuống mặt đất, nhưng chúng

35
00:02:26,790 --> 00:02:29,310
‫tôi không muốn tháp pháo xe tăng quay xuống dưới.

36
00:02:29,310 --> 00:02:31,350
‫Chúng tôi muốn nó vẫn hướng về phía trước.

37
00:02:31,350 --> 00:02:33,780
‫Vì vậy, đây là kết quả mà chúng tôi muốn.

38
00:02:33,810 --> 00:02:39,180
‫Nói cách khác, chúng tôi chỉ muốn thay đổi thành phần yea của vòng quay tháp pháo của xe tăng.

39
00:02:39,180 --> 00:02:44,550
‫Vì vậy, bằng cách đó nó đang chỉ theo hướng chính xác nhưng vẫn song song với mặt đất.

40
00:02:44,550 --> 00:02:51,060
‫Chúng tôi chỉ thay đổi ngàm của nó, vì vậy hãy quay lại mã VS và tạo một chức năng để xoay tháp pháo xe

41
00:02:51,060 --> 00:02:51,600
‫tăng.

42
00:02:51,630 --> 00:02:57,210
‫Bây giờ chúng tôi sẽ xoay tháp pháo trên xe tăng, nhưng chúng tôi cũng muốn xoay tháp pháo trên kẻ

43
00:02:57,210 --> 00:03:04,290
‫thù tháp của chúng tôi và tháp sẽ sớm được tạo ra bắt nguồn từ pon cơ sở, có nghĩa là nếu chúng tôi tạo một

44
00:03:04,290 --> 00:03:08,820
‫tháp pháo xoay chúng ta có thể đặt nó ở đây trong lớp pong cơ sở.

45
00:03:08,820 --> 00:03:12,930
‫Vì vậy, bằng cách đó cả xe tăng và tháp sẽ kế thừa chức năng này.

46
00:03:12,930 --> 00:03:18,480
‫Vì chúng tôi dự định sử dụng nó trong cả tháp và bể chứa, chúng tôi có thể đặt chức năng này được bảo vệ.

47
00:03:18,720 --> 00:03:24,630
‫Vì vậy, tôi sẽ thêm một phần được bảo vệ và bất kỳ hàm và biến nào chúng tôi đặt trong phần được bảo vệ sẽ

48
00:03:24,630 --> 00:03:29,220
‫có thể truy cập được trong các lớp con này, chứ không phải trong bất kỳ lớp nào khác.

49
00:03:29,220 --> 00:03:32,580
‫Vì vậy, nó gần như bị hạn chế như các biến riêng tư.

50
00:03:32,580 --> 00:03:34,860
‫Bây giờ hàm này có thể trả về giá trị void.

51
00:03:34,860 --> 00:03:37,710
‫Tôi sẽ gọi đây là tháp pháo xoay.

52
00:03:38,850 --> 00:03:44,690
‫Và để xoay tháp pháo, tôi sẽ cần một loại điểm đến để xem xét.

53
00:03:44,700 --> 00:03:49,620
‫Đây có thể là một vectơ f và chúng ta có thể gọi đây là mục tiêu.

54
00:03:49,620 --> 00:03:56,490
‫Vì vậy, ý tưởng là nếu chúng ta có một chức năng mà chúng ta có thể đi qua một số loại địa điểm trên thế giới,

55
00:03:56,490 --> 00:04:00,360
‫thì chức năng đó sẽ dẫn đến việc xoay tháp pháo về vị trí đó.

56
00:04:00,360 --> 00:04:04,680
‫Vì vậy, hãy tiếp tục và cung cấp định nghĩa chức năng cho tháp pháo xoay.

57
00:04:04,680 --> 00:04:11,280
‫Vì vậy, ở đây trong CP cầm đồ cơ sở ngay dưới constructor, tôi sẽ thực hiện xoay tháp pháo.

58
00:04:11,280 --> 00:04:16,680
‫Và tất nhiên tôi cần một tên lớp cầm đồ cơ sở với toán tử phân giải phạm vi ở đây.

59
00:04:16,680 --> 00:04:21,180
‫Vì vậy, bây giờ tôi đã xoay tháp pháo, hãy nghĩ về cách chúng tôi sẽ thực hiện điều này.

60
00:04:21,180 --> 00:04:28,320
‫Điều đầu tiên chúng ta cần là nhắm mục tiêu vectơ vectơ từ thành phần tháp pháo đến kết quả đánh dấu

61
00:04:28,320 --> 00:04:30,120
‫vết dưới con trỏ chuột.

62
00:04:30,120 --> 00:04:38,070
‫Vì vậy, đây có thể là một vectơ F cục bộ được gọi tới mục tiêu và chúng ta sẽ đặt nó bằng kết quả của một số

63
00:04:38,070 --> 00:04:38,970
‫phép toán vectơ.

64
00:04:38,970 --> 00:04:43,350
‫Hãy nhớ rằng, nó sẽ là điểm đến trừ đi điểm xuất phát.

65
00:04:43,350 --> 00:04:50,910
‫Và đích đến là nhìn vào mục tiêu và điểm bắt đầu sẽ là vị trí của tháp pháo của xe tăng, hay nói

66
00:04:50,910 --> 00:04:54,030
‫cách khác là vị trí của lưới tháp pháo.

67
00:04:54,030 --> 00:04:59,880
‫Vì vậy, chúng ta có thể nói lưới tháp pháo và chúng ta có thể nhận được vị trí lưới tháp pháo.

68
00:04:59,880 --> 00:05:07,290
‫Bây giờ, cách để lấy vị trí trên thế giới của một thành phần là với hàm này, hãy lấy vị trí thành phần.

69
00:05:07,290 --> 00:05:09,630
‫Nó thuộc về lớp thành phần cảnh sử dụng.

70
00:05:09,630 --> 00:05:11,460
‫Vì vậy, tất cả các thành phần cảnh đều có nó.

71
00:05:11,460 --> 00:05:15,690
‫Vì vậy, từ lưới tháp pháo, chúng tôi sẽ gọi lấy vị trí thành phần.

72
00:05:16,340 --> 00:05:23,600
‫Vì vậy, nhìn vào mục tiêu trừ vị trí lưới tháp pháo cho chúng ta véc tơ từ lưới tháp pháo đến mục tiêu

73
00:05:23,600 --> 00:05:24,290
‫quan sát.

74
00:05:24,320 --> 00:05:30,590
‫Bây giờ, như tôi đã đề cập, chúng ta có thể lấy một công cụ quay EF từ mục tiêu này đến mục tiêu bằng cách sử dụng chức năng xoay các vectơ F.

75
00:05:30,590 --> 00:05:37,100
‫Vì vậy, chúng tôi sẽ làm một công cụ quay F và chúng tôi có thể gọi đây là góc quay và chúng tôi

76
00:05:37,100 --> 00:05:40,100
‫sẽ đặt giá trị này bằng với phép quay mục tiêu.

77
00:05:40,280 --> 00:05:41,570
‫Đó là một cuộc gọi hàm.

78
00:05:41,570 --> 00:05:46,700
‫Vì vậy, bây giờ chúng ta có công cụ quay tương ứng với vectơ hướng mục tiêu này.

79
00:05:46,700 --> 00:05:49,550
‫Nhưng vấn đề là chúng tôi chỉ quan tâm đến YA.

80
00:05:49,550 --> 00:05:51,680
‫Chúng tôi không muốn thay đổi sân hoặc vai trò.

81
00:05:51,680 --> 00:05:57,290
‫Chúng tôi chỉ muốn xoay tháp pháo quanh trục z và giữ nó song song với mặt đất.

82
00:05:57,290 --> 00:05:59,420
‫Bây giờ chúng ta có thể làm điều này bằng bất kỳ cách nào.

83
00:05:59,420 --> 00:06:05,870
‫Đầu tiên, chúng ta có thể xem xét vòng quay, cao độ và số không.

84
00:06:05,870 --> 00:06:08,180
‫Nói cách khác, đặt nó bằng 0.

85
00:06:08,210 --> 00:06:14,240
‫Chúng ta cũng có thể xem xét vai trò của chấm xoay và số không đó là tốt.

86
00:06:14,240 --> 00:06:21,020
‫Bây giờ sau khi chúng tôi đã đặt cao độ và cuộn về 0, chúng tôi có vòng quay mà chúng tôi muốn, đó chỉ là thành phần.

87
00:06:21,020 --> 00:06:22,460
‫Đây là một cách để làm điều đó.

88
00:06:22,460 --> 00:06:26,450
‫Một cách khác sẽ là sử dụng một trong các quá tải của hàm tạo Rotator F.

89
00:06:26,450 --> 00:06:34,820
‫Nếu chúng ta đã nói f Rotator với dấu ngoặc đơn và được chuyển vào một số giá trị chẳng hạn như zero point F cho đầu tiên và cửa sổ bật

90
00:06:34,820 --> 00:06:38,300
‫lên đang cho tôi biết rằng đầu vào đầu tiên là cao độ.

91
00:06:38,300 --> 00:06:43,880
‫Và sau đó đối với ya chúng ta có thể sử dụng để nhắm mục tiêu xoay vòng.

92
00:06:44,330 --> 00:06:44,990
‫Ừ.

93
00:06:44,990 --> 00:06:47,960
‫Và sau đó cho vai trò, chúng tôi có thể sử dụng không chấm F.

94
00:06:47,960 --> 00:06:55,820
‫Bây giờ những gì điều này làm là tạo ra một bộ quay F mới với số không cho cao độ, số không cho vai trò và thành phần

95
00:06:55,820 --> 00:06:59,420
‫của bộ quay được trả về bởi hai phép quay mục tiêu.

96
00:06:59,420 --> 00:07:05,300
‫Vì vậy, giá trị được trả về bởi giá trị này sẽ cho chúng ta kết quả giống như những gì chúng ta đã làm ở đây với ba dòng này.

97
00:07:05,300 --> 00:07:11,990
‫Vì vậy, vì cái này nhỏ gọn và thanh lịch hơn một chút, tôi nghĩ tôi muốn sử dụng cái này hơn để chúng

98
00:07:11,990 --> 00:07:19,370
‫ta có thể khởi tạo vectơ quay với công cụ quay F được trả về bằng cách gọi hàm tạo công cụ quay F như thế này.

99
00:07:19,370 --> 00:07:21,380
‫Vì vậy, tôi sẽ xóa dòng này ở đây.

100
00:07:21,380 --> 00:07:23,360
‫Và bây giờ chúng ta đã xem xét sự xoay vòng.

101
00:07:23,360 --> 00:07:29,000
‫Bây giờ, điều cuối cùng cần làm trong chức năng này là thiết lập vòng quay cho tháp pháo.

102
00:07:29,000 --> 00:07:36,440
‫Bây giờ chúng ta có thể thiết lập xoay cho một thành phần nhất định bằng cách sử dụng chức năng này thiết lập lại vòng quay thế giới, nó

103
00:07:36,440 --> 00:07:38,270
‫thuộc về sử dụng thành phần cảnh.

104
00:07:38,270 --> 00:07:44,300
‫Và lý do chúng ta đang sử dụng phép xoay từ đặt thay vì thêm một số loại bù xoay cục bộ

105
00:07:44,300 --> 00:07:50,420
‫là vì chúng ta có một phép quay trong không gian thế giới hai mục tiêu là một vectơ hướng không gian thế giới.

106
00:07:50,420 --> 00:07:56,000
‫Chúng tôi đang lấy vị trí lưới tháp pháo trong không gian thế giới và trừ đi phần nhìn vào vị trí mục tiêu trong không

107
00:07:56,000 --> 00:07:56,750
‫gian thế giới.

108
00:07:56,750 --> 00:07:58,850
‫Vì vậy, đây là một hướng không gian thế giới.

109
00:07:58,850 --> 00:08:02,450
‫Do đó nhìn về sự quay là một vòng quay không gian thế giới.

110
00:08:02,450 --> 00:08:06,140
‫Vì vậy, chúng tôi sẽ sử dụng đặt vòng quay thế giới trên lưới tháp pháo.

111
00:08:06,290 --> 00:08:13,280
‫Vì vậy, chúng tôi sẽ nói lưới tháp pháo, thiết lập vòng quay thế giới và chúng tôi sẽ chuyển qua xem xét vòng quay.

112
00:08:13,280 --> 00:08:19,550
‫Vì vậy, bây giờ chúng tôi có một chức năng có thể lấy bất kỳ mục tiêu nào trên thế giới và xoay lưới tháp pháo

113
00:08:19,550 --> 00:08:22,550
‫để xem xét nó, nhưng nó sẽ không xoay lưới xuống dưới.

114
00:08:22,550 --> 00:08:28,100
‫Nó chỉ thay đổi ngàm của nó, vì vậy nó sẽ xoay theo cách mà tháp pháo xe tăng sẽ xoay.

115
00:08:28,100 --> 00:08:31,100
‫Vì vậy, bây giờ chúng ta có một chức năng để xoay tháp pháo.

116
00:08:31,130 --> 00:08:36,980
‫Tôi sẽ thách thức bạn gọi chức năng này để đặt vòng quay của tháp pháo đó, gọi chức năng xoay

117
00:08:36,980 --> 00:08:38,870
‫tháp pháo trong hạng xe tăng.

118
00:08:38,870 --> 00:08:40,730
‫Đây là một chức năng được bảo vệ.

119
00:08:40,730 --> 00:08:43,070
‫Vì vậy, lớp xe tăng có quyền truy cập vào nó.

120
00:08:43,070 --> 00:08:49,220
‫Bây giờ xoay tháp pháo lấy một vectơ F, nhìn vào mục tiêu, bạn sẽ sử dụng điểm tác động đó trong kết quả bắn trúng

121
00:08:49,220 --> 00:08:51,410
‫F từ dấu vết đường thẳng của chúng tôi.

122
00:08:51,410 --> 00:08:57,170
‫Vì vậy, tôi sẽ giao nó cho bạn để tìm vị trí chính xác trong mã để gọi hàm này.

123
00:08:57,410 --> 00:09:00,920
‫Vì vậy, hãy tạm dừng video và đặt chức năng xoay tháp pháo.

124
00:09:00,920 --> 00:09:02,870
‫Gọi trong lớp xe tăng.

125
00:09:06,000 --> 00:09:06,150
‫Được chứ.

126
00:09:06,300 --> 00:09:09,960
‫Vì vậy, chúng tôi có chức năng tháp pháo xoay và chúng tôi đã sẵn sàng để gọi nó.

127
00:09:10,140 --> 00:09:18,200
‫Tôi sẽ đi vào phần tăng và đây là chức năng đánh dấu của tôi bên trong nếu kiểm tra xem giới thiệu bộ điều khiển người chơi.

128
00:09:18,210 --> 00:09:24,870
‫Tôi có kết quả lần truy cập của mình và sau khi kết quả nhận được lần truy cập dưới con trỏ đã được gọi, kết quả lần truy cập sẽ có

129
00:09:24,870 --> 00:09:25,860
‫dữ liệu hợp lệ.

130
00:09:25,860 --> 00:09:30,480
‫Trên thực tế, chúng tôi đang sử dụng điểm tác động của kết quả lần truy cập đó và vẽ hình cầu gỡ lỗi.

131
00:09:30,510 --> 00:09:35,370
‫Bây giờ vì tôi không cần vẽ quả cầu gỡ lỗi nữa, nên tôi sẽ tiếp tục và xóa nó.

132
00:09:35,370 --> 00:09:39,900
‫Và thay vào đó, tôi sẽ gọi là tháp pháo xoay chức năng được bảo vệ của chúng tôi.

133
00:09:39,900 --> 00:09:45,750
‫Và để xem xét mục tiêu, tôi sẽ vượt qua điểm tác động chấm kết quả lần truy cập.

134
00:09:47,140 --> 00:09:53,320
‫Vì vậy, bây giờ mọi khung hình, chúng tôi sẽ xoay tháp pháo về phía điểm tác động đó từ kết quả trúng đích của chúng tôi.

135
00:09:53,350 --> 00:09:59,050
‫Bây giờ trước khi tôi biên dịch tệp này, tôi không còn sử dụng trình trợ giúp gỡ lỗi vẽ nữa, vì vậy tôi sẽ tiếp tục và

136
00:09:59,050 --> 00:10:00,130
‫xóa tệp tiêu đề đó.

137
00:10:00,340 --> 00:10:00,820
‫Được chứ.

138
00:10:00,850 --> 00:10:02,590
‫Bây giờ tôi đã sẵn sàng để biên dịch.

139
00:10:02,970 --> 00:10:03,360
‫Được chứ.

140
00:10:03,370 --> 00:10:05,050
‫Tôi quay lại đây trong trình biên tập.

141
00:10:05,080 --> 00:10:09,440
‫Hãy tiếp tục và nhấn chơi và kiểm tra nó.

142
00:10:09,460 --> 00:10:11,460
‫Thật đáng kinh ngạc.

143
00:10:11,470 --> 00:10:12,910
‫Tôi vẫn có thể lăn lộn.

144
00:10:12,910 --> 00:10:18,910
‫Tôi có thể di chuyển chuột và tháp pháo sẽ xoay ở bất cứ nơi nào tôi di chuyển con trỏ chuột.

145
00:10:18,910 --> 00:10:20,350
‫Vì vậy, điều này là tuyệt vời.

146
00:10:20,600 --> 00:10:25,750
‫Được rồi, vì vậy trước khi chúng ta kết thúc vấn đề này, tôi chỉ muốn giải quyết một số vấn đề.

147
00:10:25,750 --> 00:10:28,900
‫Tôi muốn cái này phải đẹp và bóng bẩy và trông thật tuyệt.

148
00:10:28,930 --> 00:10:35,680
‫Bây giờ, sự cố đầu tiên xảy ra khi tôi di chuyển con trỏ chuột đến gần tâm của bể và sau đó

149
00:10:35,680 --> 00:10:36,890
‫đi qua nó.

150
00:10:36,910 --> 00:10:42,670
‫Bạn sẽ thấy rằng tại một số điểm, loại vòng quay đó diễn ra rất nhanh.

151
00:10:42,670 --> 00:10:48,250
‫Và nếu chúng ta di chuyển con chuột một cách lộn xộn, thì, điều đó cũng không quá tuyệt.

152
00:10:48,250 --> 00:10:49,480
‫Nó đang nổ tung.

153
00:10:49,480 --> 00:10:50,890
‫Chúng ta không có chuyển động trơn tru.

154
00:10:50,890 --> 00:10:52,270
‫Vì vậy, đó là một vấn đề.

155
00:10:52,300 --> 00:10:59,890
‫Bây giờ, vấn đề còn lại là nếu tôi nhấp chuột và cuộn xung quanh và tôi đi lên phía rìa, tôi sẽ thấy rằng tháp pháo của

156
00:10:59,890 --> 00:11:03,750
‫tôi bị trượt theo hướng khác khi tôi di chuyển con trỏ chuột lên.

157
00:11:03,760 --> 00:11:05,730
‫Vậy điều gì đang xảy ra ở đó?

158
00:11:05,740 --> 00:11:06,910
‫Vâng, chúng ta hãy tìm hiểu.

159
00:11:06,910 --> 00:11:10,240
‫Chúng tôi sẽ quay lại VS Code và tôi muốn lấy lại quả cầu gỡ lỗi của mình.

160
00:11:10,240 --> 00:11:16,240
‫Vì vậy, trở lại đây trong Tank, tôi sẽ đi đến chức năng đánh dấu ngay trước khi xoay tháp pháo và

161
00:11:16,240 --> 00:11:19,240
‫một lần nữa tôi sẽ gọi vẽ quả cầu gỡ lỗi.

162
00:11:19,450 --> 00:11:26,380
‫Bây giờ đối với thế giới mà tôi đang đi qua để có được thế giới cho trung tâm Tôi đang đi qua điểm tác

163
00:11:26,380 --> 00:11:35,350
‫động chấm kết quả cho bán kính Tôi sẽ sử dụng 25 điểm F các đoạn có thể là 12, màu có thể là F Màu đỏ các đường liên tục có thể là

164
00:11:35,350 --> 00:11:38,440
‫sai và thời gian tồn tại có thể là số âm.

165
00:11:38,440 --> 00:11:40,480
‫Vì vậy, điều tương tự chúng tôi đã làm trước đây.

166
00:11:40,690 --> 00:11:42,280
‫Vì vậy, tôi sẽ lưu thông báo này.

167
00:11:42,280 --> 00:11:48,700
‫Tôi không thêm tệp tiêu đề vào đó và đó là vì trình trợ giúp gỡ lỗi thực sự được bao gồm theo mặc định, vì vậy về

168
00:11:48,700 --> 00:11:50,830
‫mặt kỹ thuật, chúng tôi không cần nó.

169
00:11:50,830 --> 00:11:56,740
‫Tôi chỉ sẽ lưu lại bước quay trong trình chỉnh sửa, thực hiện bắt đầu mã hóa trực tiếp và nhấn play.

170
00:11:56,740 --> 00:11:58,600
‫Vì vậy, bây giờ tôi có quả cầu gỡ lỗi của mình.

171
00:11:58,600 --> 00:12:05,320
‫Vì vậy, chúng ta hãy đi đến rìa của thế giới và tôi sẽ di chuyển con trỏ chuột đó đến

172
00:12:05,320 --> 00:12:07,240
‫nơi nó rơi xuống vực sâu.

173
00:12:07,240 --> 00:12:10,330
‫Và đó là nơi chúng tôi có vấn đề.

174
00:12:10,330 --> 00:12:15,940
‫Bạn thấy đấy, chúng tôi không có kết quả lần truy cập dưới con trỏ khi con trỏ của chúng tôi di chuyển lên đó vì không có gì

175
00:12:15,940 --> 00:12:18,730
‫ở đó để chúng tôi nhận được kết quả lần truy cập từ đó.

176
00:12:18,730 --> 00:12:22,120
‫Do đó, điểm tác động của chúng tôi không được xác định.

177
00:12:22,120 --> 00:12:25,570
‫Vì vậy, những gì chúng ta cần là một cái gì đó để đánh dấu vết dòng đó.

178
00:12:25,600 --> 00:12:28,810
‫Giờ đây, Unreal Engine có rất nhiều công cụ mà chúng ta có thể sử dụng.

179
00:12:28,810 --> 00:12:35,170
‫Những gì tôi sẽ làm là nhấp vào trình đơn thả xuống ở đây và mở bảng điều khiển diễn viên vị trí của tôi và chọn

180
00:12:35,170 --> 00:12:38,380
‫biểu tượng này cho biết âm lượng và nhận một âm lượng chặn.

181
00:12:38,380 --> 00:12:39,820
‫Đây là khối lượng chặn.

182
00:12:39,820 --> 00:12:41,710
‫Tôi sẽ kéo một người vào ngay.

183
00:12:41,740 --> 00:12:44,020
‫Vì vậy, bây giờ tôi có khối lượng chặn này.

184
00:12:44,110 --> 00:12:48,190
‫Bây giờ theo mặc định, khối lượng chặn được cho là ẩn.

185
00:12:48,190 --> 00:12:54,130
‫Nếu tôi đi đến bảng chi tiết cho điều này và cuộn xuống va chạm, tôi thấy rằng đó

186
00:12:54,130 --> 00:13:00,940
‫là Cài đặt trước xung đột là Tường vô hình, có vẻ như cho thấy rằng nó sẽ chặn hầu hết mọi thứ.

187
00:13:00,940 --> 00:13:06,610
‫Điều duy nhất mà nó không chặn là kênh hiển thị và dấu vết đường thẳng của chúng tôi tình

188
00:13:06,610 --> 00:13:08,680
‫cờ theo dõi kênh hiển thị.

189
00:13:08,680 --> 00:13:13,630
‫Bất kỳ thứ gì trong thế giới của chúng ta chặn kênh hiển thị đều sẽ bị theo dõi dòng của chúng ta.

190
00:13:13,630 --> 00:13:16,540
‫Nhưng khối lượng cụ thể này sẽ không.

191
00:13:16,540 --> 00:13:17,860
‫Nó được cho là vô hình.

192
00:13:17,860 --> 00:13:22,690
‫Chà, chúng ta có thể chuyển đến cài đặt trước va chạm, mở menu thả xuống và chọn tùy chỉnh.

193
00:13:22,720 --> 00:13:28,300
‫Điều này sẽ cho phép chúng tôi thay đổi điều đó để tôi có thể đặt phản ứng va chạm cho kênh hiển thị.

194
00:13:28,300 --> 00:13:29,170
‫Đó là một khối.

195
00:13:29,170 --> 00:13:34,960
‫Vì vậy, bây giờ tôi có một âm lượng vô hình, nhưng nó được đặt để chặn kênh hiển thị, có nghĩa

196
00:13:34,960 --> 00:13:40,180
‫là các dấu vết đường theo dõi kênh hiển thị giống như của chúng ta sẽ chạm vào nó.

197
00:13:40,180 --> 00:13:45,580
‫Vì vậy, những gì tôi có thể làm là tôi có thể lấy khối lượng chặn này và mở rộng quy mô.

198
00:13:45,580 --> 00:13:47,800
‫Tôi sẽ đặt nó ngay bên ngoài bức tường.

199
00:13:47,800 --> 00:13:53,440
‫Trên thực tế, tôi có thể đặt nó ngay tại đây ở ranh giới của bức tường, và tôi sẽ hạ nó xuống

200
00:13:53,440 --> 00:13:55,900
‫một chút để nó giống như chồng lên bức tường.

201
00:13:55,900 --> 00:14:01,930
‫Và bằng cách đó, chúng ta có rào cản vô hình này ở đây, và tôi cũng sẽ tiếp tục và mở rộng

202
00:14:01,930 --> 00:14:03,550
‫quy mô nó theo hướng Y.

203
00:14:03,550 --> 00:14:09,880
‫Vì vậy, tôi sẽ lấy nó đẹp và lớn và đặt nó ở giữa ở đây và cho nó một chút đệm.

204
00:14:09,880 --> 00:14:14,050
‫Và tôi cũng sẽ mở rộng quy mô theo hướng Z.

205
00:14:14,050 --> 00:14:18,460
‫Vì vậy, bây giờ nó đẹp và lớn và dấu vết đường thẳng của chúng ta sẽ đánh trúng nó.

206
00:14:18,460 --> 00:14:20,080
‫Vì vậy, chúng ta hãy kiểm tra lý thuyết đó.

207
00:14:20,110 --> 00:14:23,170
‫Hãy nhấp vào khung nhìn và đi lên tường.

208
00:14:23,170 --> 00:14:30,250
‫Và chắc chắn, tôi đang đạt được khối lượng chặn đó với dấu vết đường dây của mình và tôi không gặp vấn đề đó khi tháp

209
00:14:30,250 --> 00:14:34,240
‫pháo của tôi có thể nhìn vào một số vị trí không xác định.

210
00:14:34,240 --> 00:14:40,810
‫Nó có lẽ đang hướng về nguồn gốc của thế giới vì vectơ điểm va chạm đó đều là số không.

211
00:14:40,810 --> 00:14:43,660
‫Bây giờ nếu tôi đi lên bức tường này, tôi có cùng một vấn đề.

212
00:14:43,660 --> 00:14:46,270
‫Vì vậy, chúng tôi cần những khối lượng chặn này.

213
00:14:46,600 --> 00:14:48,950
‫Tất cả xung quanh chu vi của cấp độ của chúng tôi.

214
00:14:48,970 --> 00:14:50,590
‫Bây giờ, điều đó có thể khá dễ dàng.

215
00:14:50,590 --> 00:14:54,820
‫Tất cả những gì tôi cần làm là sao chép khối lượng chặn này.

216
00:14:54,820 --> 00:14:59,290
‫Bây giờ tôi có thể thay đổi từ chế độ xem phối cảnh sang chế độ xem trực quan hàng đầu.

217
00:14:59,290 --> 00:15:06,070
‫Vì vậy, tôi sẽ chọn trên cùng và cuộn ra bằng con lăn chuột của mình và chỉ cần giữ alt và nhân đôi bức tường

218
00:15:06,070 --> 00:15:11,620
‫này và đặt một bức tường ở đây và tôi có thể nhấn E để chuyển sang chế độ xoay.

219
00:15:11,620 --> 00:15:14,740
‫Vì vậy, tôi sẽ giữ alt và xoay 90 độ.

220
00:15:14,740 --> 00:15:21,010
‫Điều đó sẽ cung cấp cho tôi một bản sao và sau đó tôi sẽ nhấn đúp và bắt đầu chế độ dịch của mình

221
00:15:21,010 --> 00:15:26,920
‫và tôi sẽ di chuyển nó lên đây sang bên này và giữ Alt và kéo một bản sao xuống bên đó.

222
00:15:26,920 --> 00:15:28,720
‫Vì vậy, bây giờ chúng ta có bốn bức tường.

223
00:15:28,720 --> 00:15:34,990
‫Bây giờ tôi có thể đi từ góc nhìn từ trên xuống dưới góc nhìn và nhấn phát, và bây giờ tôi có thể đi lên bất kỳ bức

224
00:15:34,990 --> 00:15:40,240
‫tường nào trong số những bức tường này và tôi đã che bức tường nào không quan trọng, vì vậy nó trông rất tuyệt.

225
00:15:40,240 --> 00:15:42,340
‫Vì vậy, đó sẽ giải quyết một trong những vấn đề của chúng tôi.

226
00:15:42,340 --> 00:15:43,720
‫Nhưng cái này cái kia thì sao?

227
00:15:43,720 --> 00:15:49,360
‫Nếu chúng ta di chuyển chuột xung quanh gần bể của chúng ta, chúng ta vẫn có hành vi rời rạc này.

228
00:15:49,360 --> 00:15:51,880
‫Vì vậy, tôi cũng muốn giải quyết vấn đề đó.

229
00:15:51,880 --> 00:15:56,770
‫Bây giờ, cách tôi có thể giải quyết vấn đề này là nội suy vòng quay đó.

230
00:15:56,770 --> 00:16:02,650
‫Vì vậy, thay vì đặt trực tiếp giá trị xoay này, chúng ta có thể sử dụng một hàm nội

231
00:16:02,650 --> 00:16:08,740
‫suy về cơ bản sẽ di chuyển xoay đó về phía mục tiêu mà chúng ta cung cấp một cách trơn tru.

232
00:16:08,740 --> 00:16:10,270
‫Vì vậy, chúng ta hãy xem nó hoạt động như thế nào.

233
00:16:10,270 --> 00:16:15,970
‫Bây giờ, tôi muốn phép nội suy này có trong chức năng xoay tháp pháo của chúng tôi để chúng tôi

234
00:16:15,970 --> 00:16:22,750
‫có thể quay trở lại chốt cơ sở để xoay tháp pháo và thay vì đặt vòng quay thế giới của chúng tôi để tháp

235
00:16:22,750 --> 00:16:28,240
‫có thể xoay, chúng tôi có thể đặt nó bằng giá trị được trả về bởi một hàm nội suy.

236
00:16:28,240 --> 00:16:34,720
‫Vì vậy, tôi sẽ xóa, nhìn vào phép quay và thay vào đó chúng ta sẽ gọi một hàm

237
00:16:34,720 --> 00:16:38,590
‫trên thư viện toán F được gọi là R liên hai.

238
00:16:39,100 --> 00:16:44,530
‫Bây giờ trong hai của chúng tôi được thiết kế để xử lý nội suy cho các rôto.

239
00:16:44,530 --> 00:16:49,720
‫Bây giờ tham số đầu vào đầu tiên của nó là một tham chiếu bộ quay const F được gọi là dòng điện.

240
00:16:49,720 --> 00:16:53,650
‫Đó là giá trị hiện tại của thứ mà chúng tôi đang cố gắng thay đổi.

241
00:16:53,650 --> 00:16:59,560
‫Điều chúng tôi đang cố gắng thay đổi là vòng quay của tháp pháo và chúng tôi có thể lấy điều đó từ lưới tháp pháo của mình.

242
00:16:59,560 --> 00:17:05,920
‫Vì vậy, chúng tôi sẽ nói lưới tháp pháo và chức năng chúng tôi muốn sử dụng là nhận xoay thành phần.

243
00:17:05,920 --> 00:17:10,420
‫Vì vậy, nó giống như lấy vị trí thành phần chỉ nó nhận được vòng quay.

244
00:17:10,420 --> 00:17:14,200
‫Bây giờ đầu vào tiếp theo là một công cụ quay F được gọi là Target.

245
00:17:14,200 --> 00:17:15,310
‫Đó là giá trị.

246
00:17:15,310 --> 00:17:21,430
‫Chúng tôi muốn vòng xoay lưới tháp pháo này diễn giải để tiếp cận một cách suôn sẻ.

247
00:17:21,430 --> 00:17:23,890
‫Đó sẽ là cái nhìn của chúng ta về sự xoay vòng.

248
00:17:23,890 --> 00:17:26,620
‫Vì vậy, tôi sẽ nói rằng hãy nhìn vào chuyển động quay.

249
00:17:26,620 --> 00:17:28,630
‫Đầu vào tiếp theo là thời gian Delta.

250
00:17:28,630 --> 00:17:30,640
‫Vì vậy, chúng tôi biết tầm quan trọng của thời gian Delta.

251
00:17:30,640 --> 00:17:37,030
‫Nếu chúng ta đang di chuyển mọi thứ hoặc xoay mọi thứ, chúng ta muốn chuyển động đó không phụ thuộc vào tốc độ khung hình.

252
00:17:37,030 --> 00:17:39,700
‫Vì vậy, chúng ta có thể nhận được thời gian Delta.

253
00:17:39,700 --> 00:17:46,210
‫Tôi chỉ có thể bao gồm các tĩnh trong trò chơi và nếu bạn có trí nhớ tốt, bạn sẽ nhớ

254
00:17:46,210 --> 00:17:49,150
‫rằng bao gồm tĩnh trong trò chơi chém kismet.

255
00:17:49,150 --> 00:17:57,700
‫Vì vậy, tôi sẽ tải tĩnh trò chơi ở đây để tôi có thể truy cập hàm tĩnh, lấy giây đồng bằng thế giới và nhớ điều

256
00:17:57,700 --> 00:18:01,150
‫này yêu cầu một đối tượng ngữ cảnh thế giới.

257
00:18:01,150 --> 00:18:04,030
‫Vì vậy, tôi sẽ chuyển cái này vào cái kia.

258
00:18:04,030 --> 00:18:06,340
‫Và cuối cùng, chúng ta cần một tốc độ nội bộ.

259
00:18:06,340 --> 00:18:12,280
‫Giá trị của tốc độ bên trong càng cao, chúng ta sẽ nội suy về phía mục tiêu càng nhanh.

260
00:18:12,280 --> 00:18:18,550
‫Vì vậy, nếu tôi đặt giá trị này thành một giá trị giả sử, năm F, thì chúng tôi sẽ nội suy khá chậm.

261
00:18:18,580 --> 00:18:20,470
‫Hãy xem nó trông như thế nào bây giờ.

262
00:18:20,470 --> 00:18:25,030
‫Tất cả những điều này nằm trên một dòng duy nhất và nó chạy ra khỏi màn hình.

263
00:18:25,030 --> 00:18:32,440
‫Vì vậy, những gì tôi sẽ làm là đặt đầu vào để thiết lập vòng quay thế giới trên dòng riêng của nó như thế này.

264
00:18:32,440 --> 00:18:34,060
‫Vì vậy, chỉ cần như vậy.

265
00:18:34,060 --> 00:18:39,820
‫Và sau đó thông dịch viên của chúng tôi, người có bốn tham số đầu vào này cũng chạy ra khỏi màn hình.

266
00:18:39,820 --> 00:18:43,270
‫Vì vậy, tôi sẽ sắp xếp chúng theo từng dòng riêng của chúng.

267
00:18:43,270 --> 00:18:49,420
‫Bằng cách đó, chúng tôi có thể xem tất cả các đầu vào mà không cần phải cuộn màn hình như vậy.

268
00:18:49,420 --> 00:18:49,840
‫Được rồi.

269
00:18:49,840 --> 00:18:54,220
‫Tôi sẽ tiếp tục và lưu điều đó và bắt đầu mã hóa trực tiếp.

270
00:18:54,220 --> 00:19:01,150
‫Và bây giờ nếu tôi nhấn play và tôi di chuyển chuột, hãy lưu ý rằng sẽ mất một lúc để việc xoay đó xảy

271
00:19:01,150 --> 00:19:01,480
‫ra.

272
00:19:01,480 --> 00:19:06,430
‫Đó là bởi vì chúng tôi đang nội suy một cách suôn sẻ theo hướng xoay mục tiêu đó.

273
00:19:06,430 --> 00:19:07,780
‫Bây giờ, điều này là tuyệt vời.

274
00:19:07,780 --> 00:19:09,340
‫Đó chính xác là những gì tôi muốn.

275
00:19:09,340 --> 00:19:14,950
‫Bất kể tôi di chuyển chuột bằng cách nào, tôi sẽ không bao giờ nhận được chuyển động rời rạc, giật cục đó.

276
00:19:15,040 --> 00:19:20,170
‫Bây giờ, năm là tốc độ Internet chậm kinh khủng, nhưng chúng ta có thể thay đổi điều đó.

277
00:19:20,170 --> 00:19:21,820
‫Chúng tôi có thể làm cho nó nhanh hơn một chút.

278
00:19:21,820 --> 00:19:28,420
‫Tôi sẽ đặt giá trị này thành 25, xem nó trông như thế nào và tôi sẽ để bạn tiếp tục và quyết định giá trị mà bạn

279
00:19:28,420 --> 00:19:30,040
‫thích cho trò chơi của mình.

280
00:19:30,040 --> 00:19:34,450
‫Vì vậy, một lần nữa, hãy bắt đầu chơi mã hóa trực tiếp và nhấn.

281
00:19:34,510 --> 00:19:39,010
‫Bây giờ tôi có một phép nội suy khá nhanh, nhưng nó không chặt chẽ.

282
00:19:39,010 --> 00:19:42,910
‫Nó vẫn nhanh chóng, nhưng nó không phải là một tích tắc tức thời.

283
00:19:42,910 --> 00:19:46,360
‫Vì vậy, miễn là chúng ta không làm điều gì đó như thế này, thì, chúng ta sẽ không làm điều đó.

284
00:19:46,540 --> 00:19:47,860
‫Hành vi điên rồ.

285
00:19:47,860 --> 00:19:53,500
‫Và tất nhiên, nếu bạn muốn xoay chậm hơn, bạn biết cách làm điều đó ngay bây giờ và chúng ta đã hoàn thành việc vẽ quả cầu

286
00:19:53,500 --> 00:19:56,220
‫gỡ lỗi, vì vậy tôi sẽ tiếp tục và loại bỏ điều đó.

287
00:19:56,230 --> 00:19:56,650
‫Được chứ.

288
00:19:56,650 --> 00:20:02,920
‫Vì vậy, tóm lại, chúng tôi đã thiết lập vòng quay của tháp pháo và chúng tôi đang xem xét Mục tiêu, là một

289
00:20:02,920 --> 00:20:05,800
‫vectơ F tương ứng với một điểm trên thế giới.

290
00:20:05,800 --> 00:20:08,080
‫Ngay bây giờ chúng tôi chỉ sử dụng kết quả lần truy cập theo dõi.

291
00:20:08,110 --> 00:20:13,090
‫Bây giờ chúng ta đặt hàm này trong lớp pong cơ sở và làm cho nó được bảo vệ, có nghĩa

292
00:20:13,090 --> 00:20:15,880
‫là chúng ta có thể kế thừa hàm trong lớp tank.

293
00:20:15,880 --> 00:20:21,190
‫Và khi chúng ta đã sẵn sàng tạo một lớp tháp dựa trên cơ sở -, thì lớp tháp đó sẽ kế thừa

294
00:20:21,190 --> 00:20:24,610
‫chức năng tháp xoay này và chúng ta có thể sử dụng lại nó.

295
00:20:24,610 --> 00:20:26,050
‫Tất cả những gì chúng ta cần làm là vượt qua.

296
00:20:26,050 --> 00:20:31,750
‫Trong giao diện mới về Target, chúng tôi sẽ làm việc để tạo một lớp tháp có nguồn gốc từ cơ sở - trong các bài giảng

297
00:20:31,750 --> 00:20:32,380
‫sắp tới.

298
00:20:32,380 --> 00:20:33,250
‫Tôi sẽ gặp bạn sớm.

